在C#中读取XML注释
我有一些XML文件包含节点上方的注释。 当我在阅读文件时,作为整个过程的一部分,我也希望得到评论。 我知道您可以使用XmlComment对文件写注释,但不知道如何将它们读回来。
我的XML看起来与此类似:
试试这个:
XmlReaderSettings readerSettings = new XmlReaderSettings(); readerSettings.IgnoreComments = false; using (XmlReader reader = XmlReader.Create("input.xml", readerSettings)) { XmlDocument myData = new XmlDocument(); myData.Load(reader); // etc... }
阅读评论:
XmlReader xmlRdr = XmlReader.Create("Test.XML"); // Parse the file while (xmlRdr.Read()) { switch (xmlRdr.NodeType) { case XmlNodeType.Element: // You may need to capture the last element to provide a context // for any comments you come across... so copy xmlRdr.Name, etc. break; case XmlNodeType.Comment: // Do something with xmlRdr.value
使用System.Xml.Linq:
var doc = XElement.Load(fileName); var comments = doc.DescendantNodes().OfType(); foreach (XComment comment in comments) ...
它们是包含节点的子节点的一部分,与所有其他节点一样: http : //msdn.microsoft.com/en-us/library/system.xml.xmlcomment.aspx
我知道问题很老,但昨天我遇到了同样的问题。 所以这是我的解决方案:
XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreWhitespace = false; settings.IgnoreComments = false; XmlReaderSettings settings2 = new XmlReaderSettings(); settings2.IgnoreWhitespace = false; settings2.IgnoreComments = false; XmlReader xmlreaderOriginalCfg = XmlReader.Create(@"C:\...xml", settings); XmlReader xmlreaderVerificationCfg = XmlReader.Create(@"C:\....xml", settings); XmlDocument myData = new XmlDocument(); myData.Load(xmlreaderOriginalCfg); XmlDocument myData2 = new XmlDocument(); myData2.Load(xmlreaderVerificationCfg); XmlNode parentNode = myData.SelectSingleNode("/configuration/appSettings"); foreach (XmlComment comment in myData2.SelectNodes("//comment()")) { XmlComment importedCom = myData.CreateComment(comment.Value); parentNode.AppendChild(importedCom); foreach (XmlNode node in myData2.DocumentElement.SelectNodes("/configuration/appSettings/add")) { XmlNode imported = myData.ImportNode(node, true); parentNode.AppendChild(imported); } } myData.Save(this.pathNew);
也许这有助于某人
我将您的XML存储到一个文件中,这是代码示例。
XmlDocument document = new XmlDocument(); document.Load("test.xml"); foreach (XmlComment comment in document.SelectNodes("//comment()")) { Console.WriteLine("Comment: \"{0}\".", comment.Value); }
有关如何访问注释的一些示例代码希望这会有所帮助
using System; using System.IO; using System.Xml; public class Sample { public static void Main() { XmlDocument doc = new XmlDocument(); doc.LoadXml(@" "); XmlNode root = doc.FirstChild; if (root.HasChildNodes) { for (int i=0; i