Add project
Basic formatting applied. Unnecessary comments have been removed. Suspicious code is covered by TODO.
This commit is contained in:
77
Hcs.Client/GostXades/Helpers/XmlDocumentHelper.cs
Normal file
77
Hcs.Client/GostXades/Helpers/XmlDocumentHelper.cs
Normal file
@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Xml;
|
||||
|
||||
namespace Hcs.GostXades.Helpers
|
||||
{
|
||||
public static class XmlDocumentHelper
|
||||
{
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> XmlDocument <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public static XmlDocument Create(string xmlData)
|
||||
{
|
||||
var xmlDocument = new XmlDocument { PreserveWhitespace = true };
|
||||
try
|
||||
{
|
||||
xmlDocument.LoadXml(xmlData);
|
||||
}
|
||||
catch (XmlException xmlEx)
|
||||
{
|
||||
throw new InvalidOperationException($"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xml <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: {xmlEx.Message}", xmlEx);
|
||||
}
|
||||
return xmlDocument;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> XmlDocument <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||||
/// </summary>
|
||||
public static XmlDocument Load(string pathName)
|
||||
{
|
||||
var xmlDocument = new XmlDocument { PreserveWhitespace = true };
|
||||
try
|
||||
{
|
||||
xmlDocument.Load(pathName);
|
||||
}
|
||||
catch (XmlException xmlEx)
|
||||
{
|
||||
throw new InvalidOperationException($"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> xml <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: {xmlEx.Message}", xmlEx);
|
||||
}
|
||||
return xmlDocument;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> XmlDocument
|
||||
/// </summary>
|
||||
public static XmlNamespaceManager CreateNamespaceManager(this XmlDocument xml)
|
||||
{
|
||||
var manager = new XmlNamespaceManager(xml.NameTable);
|
||||
foreach (var name in GetNamespaceDictionary(xml))
|
||||
{
|
||||
manager.AddNamespace(name.Key, name.Value);
|
||||
}
|
||||
|
||||
return manager;
|
||||
}
|
||||
|
||||
private static IDictionary<string, string> GetNamespaceDictionary(this XmlDocument xml)
|
||||
{
|
||||
var nameSpaceList = xml.SelectNodes(@"//namespace::*[not(. = ../../namespace::*)]").OfType<XmlNode>();
|
||||
return nameSpaceList.Distinct(new LocalNameComparer()).ToDictionary(xmlNode => xmlNode.LocalName, xmlNode => xmlNode.Value);
|
||||
}
|
||||
|
||||
private class LocalNameComparer : IEqualityComparer<XmlNode>
|
||||
{
|
||||
public bool Equals(XmlNode x, XmlNode y)
|
||||
{
|
||||
return x.LocalName == y.LocalName;
|
||||
}
|
||||
|
||||
public int GetHashCode(XmlNode obj)
|
||||
{
|
||||
return obj.LocalName.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user