Initial commit

This commit is contained in:
2014-04-30 16:57:42 -04:00
commit 5c4a1c8b4c
126 changed files with 52769 additions and 0 deletions

142
Xml/XmlExtensions.cs Normal file
View File

@@ -0,0 +1,142 @@
using System;
using System.Xml;
using System.Collections.Generic;
using System.Xml.XPath;
using System.IO;
namespace Common.Xml
{
public static class XmlExtensions
{
public static void WriteElementValue(this XmlWriter writer, string elementName, TimeSpan value)
{
writer.WriteStartElement(elementName);
writer.WriteValue(value.TotalMilliseconds);
writer.WriteEndElement();
}
public static void WriteElementValue(this XmlWriter writer, string elementName, object value)
{
writer.WriteStartElement(elementName);
writer.WriteValue(value);
writer.WriteEndElement();
}
public static void ReadElementValue(this XmlReader reader, string elementName, ref string value)
{
try
{
reader.ReadStartElement(elementName);
value = reader.ReadContentAsString();
reader.ReadEndElement();
}
catch (XmlException)
{
// Ignore
}
}
public static void ReadElementValue(this XmlReader reader, string elementName, ref int value)
{
try
{
reader.ReadStartElement(elementName);
value = reader.ReadContentAsInt();
reader.ReadEndElement();
}
catch (XmlException)
{
// Ignore
}
}
public static void ReadElementValue(this XmlReader reader, string elementName, ref DateTime value)
{
try
{
reader.ReadStartElement(elementName);
value = reader.ReadContentAsDateTime();
reader.ReadEndElement();
}
catch (XmlException)
{
// Ignore
}
}
public static void ReadElementValue(this XmlReader reader, string elementName, ref bool value)
{
try
{
reader.ReadStartElement(elementName);
value = reader.ReadContentAsBoolean();
reader.ReadEndElement();
}
catch (XmlException)
{
// Ignore
}
}
public static void ReadElementValue(this XmlReader reader, string elementName, ref TimeSpan value)
{
try
{
reader.ReadStartElement(elementName);
int milliseconds = reader.ReadContentAsInt();
value = new TimeSpan(0, 0, 0, 0, milliseconds);
reader.ReadEndElement();
}
catch (XmlException)
{
// Ignore
}
}
public static XmlNamespaceManager GetAllNamespaces(this XmlDocument document)
{
// Create the namespace manager from the name table
XmlNamespaceManager namespaceManager = new XmlNamespaceManager(document.NameTable);
// Create a dictionary of all namespaces
Dictionary<string, string> allNamespaces = new Dictionary<string, string>();
// Create an XPathDocument from the XML of the XmlDocument
XPathDocument xPathDocument = new XPathDocument(new StringReader(document.InnerXml));
// Create an XPathNavigator for the document
XPathNavigator xPathNavigator = xPathDocument.CreateNavigator();
// Loop over all elements
while (xPathNavigator.MoveToFollowing(XPathNodeType.Element))
{
// Get the list of local namespaces
var localNamespaces = xPathNavigator.GetNamespacesInScope(XmlNamespaceScope.Local);
// Add all local namespaces to the master list
foreach (var ns in localNamespaces)
allNamespaces[ns.Key] = ns.Value;
}
// Loop over all namespaces
foreach (var ns in allNamespaces)
{
// Use the key as the name
string namespaceName = ns.Key;
// If the name is blank then use "default" instead
if (string.IsNullOrEmpty(namespaceName))
namespaceName = "default";
// Add the namespace to the manager
namespaceManager.AddNamespace(namespaceName, ns.Value);
}
// Add the default namespace if missing
if (!namespaceManager.HasNamespace("default"))
namespaceManager.AddNamespace("default", "");
return namespaceManager;
}
}
}