< Summary - SonghayCore

Information
Class: Songhay.Extensions.XNodeExtensions
Assembly: SonghayCore
File(s): /home/rasx/sourceRoot/SonghayCore/SonghayCore/Extensions/XNodeExtensions.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 19
Coverable lines: 19
Total lines: 69
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 12
Branch coverage: 0%
Method coverage

Method coverage is only available for sponsors.

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
GetInnerXml(...)100%10%
GetInnerXml(...)0%40%
GetNamespaceResolver(...)0%20%
GetOuterXml(...)0%20%
GetOuterXml(...)0%40%

File(s)

/home/rasx/sourceRoot/SonghayCore/SonghayCore/Extensions/XNodeExtensions.cs

#LineLine coverage
 1namespace Songhay.Extensions;
 2
 3/// <summary>
 4/// Extensions of <see cref="XNode"/>.
 5/// </summary>
 6public static class XNodeExtensions
 7{
 8    /// <summary>
 9    /// Gets the inner XML.
 10    /// </summary>
 11    /// <param name="node">The node.</param>
 012    public static string? GetInnerXml(this XNode node) => node.GetInnerXml(true, ReaderOptions.None);
 13
 14    /// <summary>
 15    /// Gets the inner XML.
 16    /// </summary>
 17    /// <param name="node">The node.</param>
 18    /// <param name="stripNamespaces">if set to <c>true</c> then strip namespaces (<c>true</c> by default).</param>
 19    /// <param name="options">The options (<see cref="ReaderOptions.None"/> by default).</param>
 20    /// <remarks>
 21    /// “If performance is important (e.g. lots of XML, parsed frequently), I'd use Daniel's CreateReader method every t
 22    /// [http://stackoverflow.com/questions/3793/best-way-to-get-innerxml-of-an-xelement]
 23    /// —Luke Sampson
 24    /// </remarks>
 25    public static string? GetInnerXml(this XNode? node, bool stripNamespaces, ReaderOptions options)
 026    {
 027        if (node == null) return null;
 28
 029        var reader = node.CreateReader(options);
 030        reader.MoveToContent();
 031        var innerXml = reader.ReadInnerXml();
 32
 033        if (stripNamespaces) innerXml = XmlUtility.StripNamespaces(innerXml);
 34
 035        return innerXml;
 036    }
 37
 38    /// <summary>
 39    /// Gets <see cref="IXmlNamespaceResolver"/> from the specified node.
 40    /// </summary>
 41    /// <param name="node">The node.</param>
 42    public static IXmlNamespaceResolver? GetNamespaceResolver(this XNode? node) =>
 043        node == null ? null : XmlUtility.GetNamespaceManager(node.CreateNavigator());
 44
 45    /// <summary>
 46    /// Gets the outer XML.
 47    /// </summary>
 48    /// <param name="node">The node.</param>
 049    public static string? GetOuterXml(this XNode? node) => node?.GetOuterXml(true, ReaderOptions.None);
 50
 51    /// <summary>
 52    /// Gets the outer XML.
 53    /// </summary>
 54    /// <param name="node">The node.</param>
 55    /// <param name="stripNamespaces">if set to <c>true</c> then strip namespaces (<c>true</c> by default).</param>
 56    /// <param name="options">The options (<see cref="ReaderOptions.None"/> by default).</param>
 57    public static string? GetOuterXml(this XNode? node, bool stripNamespaces, ReaderOptions options)
 058    {
 059        if (node == null) return null;
 60
 061        var reader = node.CreateReader(options);
 062        reader.MoveToContent();
 063        var outerXml = reader.ReadOuterXml();
 64
 065        if (stripNamespaces) outerXml = XmlUtility.StripNamespaces(outerXml);
 66
 067        return outerXml;
 068    }
 69}