Created
October 29, 2013 10:55
-
-
Save rarous/7212499 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
protected XElement TransformDates(XElement inputXml, string schema) | |
{ | |
var inputXmlDoc = new XmlDocument(); | |
inputXmlDoc.Load(inputXml.CreateReader()); | |
var asm = GetType().Assembly; | |
//get namespace from xml | |
var xmlString = inputXmlDoc.DocumentElement.OuterXml; | |
var xPathXml = new XPathDocument(inputXml.CreateReader()); | |
var navigator = xPathXml.CreateNavigator(); | |
navigator.MoveToFollowing(XPathNodeType.Element); | |
var namespaces = navigator.GetNamespacesInScope(XmlNamespaceScope.All); | |
string nms; | |
namespaces.TryGetValue(string.Empty, out nms); | |
//namespace | |
var ns = new XmlNamespaceManager(inputXmlDoc.NameTable); | |
ns.AddNamespace("x", nms); | |
//load schema | |
var tr = new XmlTextReader(new StringReader(xmlString)); | |
var vr = new XmlReaderSettings | |
{ | |
ValidationType = ValidationType.Schema | |
}; | |
using (var resource = asm.GetManifestResourceStream(asm.GetManifestResourceNames().First(m => m.EndsWith(schema)))) | |
{ | |
using (var r = XmlReader.Create(resource)) | |
{ | |
vr.Schemas.Add(nms, r); | |
} | |
using (var reader = XmlReader.Create(tr, vr)) | |
{ | |
reader.MoveToContent(); | |
while (reader.Read()) | |
{ | |
if (reader.NodeType != XmlNodeType.Element) | |
continue; | |
var name = reader.Name; | |
try | |
{ | |
if (reader.ValueType != typeof(DateTime)) | |
continue; | |
var el = XNode.ReadFrom(reader) as XElement; | |
if (el != null) | |
inputXmlDoc.DocumentElement.SelectSingleNode("//x:" + name, ns).InnerText = DateTime.Parse(el.Value).ToString("ddMMyyyy"); | |
} | |
catch | |
{ | |
} | |
} | |
} | |
} | |
return XElement.Parse(inputXmlDoc.OuterXml); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment