在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