c#使用XDocument读取XML注释

时间:2013-12-09 22:00:51

标签: c# xml

如何在使用XDocument时阅读xml注释?

XDocument doc = XDocument.Load("joker.xml");
 foreach (XElement element in doc.Descendants("server"))
            {
//I use this to read server tag...
}



<?xml version="1.0" encoding="ISO-8859-1"?>
<ho>
    <!-- For X use only -->
    <servers>
        <server NAME="xx" ></server>

    <!-- Dummy servers  -->
        <server NAME="xx" ></server>
        <server NAME="xx" ></server>
    </servers>
</ho>

4 个答案:

答案 0 :(得分:5)

Node对象是整个DOM的主要数据类型。

节点可以是元素节点,属性节点,文本节点或"Node types" chapter.

中说明的任何其他节点类型

XML元素是从(包括)元素的开始标记到(包括)元素的结束标记的所有内容。

     XDocument xdoc = XDocument.Load("");
       foreach (var node in xdoc.Descendants("servers").Nodes())
        {

            if (node is XComment)
            {
                //THEN  READ YOUR COMMENT 

            }

        }

答案 1 :(得分:4)

读取xml时检查节点类型。如果它是XComment那么你正在阅读评论。例如。在您的情况下,服务器元素的上一个节点将是注释:

foreach(var s in doc.Descendants("server"))
{
    var comment = s.PreviousNode as XComment;
    if (comment != null)
        Console.WriteLine(comment.Value); // outputs "Dummy servers"
}

答案 2 :(得分:0)

您必须使用XmlReader.Create方法并读取它并在节点之间切换以指示它当前正在读取哪个节点 不要被Create方法欺骗...它会读取有问题的xml文件,但会创建一个XmlReader对象的实例:

http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.create(v=vs.110).aspx

XmlReader xmlRdr = XmlReader.Create("Joker.XML");
// Parse the file
while (xmlRdr.Read())
{
    switch (xmlRdr.NodeType)
    {
        case XmlNodeType.Element:
            // Current node is an Xml Element
            break;
        case XmlNodeType.Comment:
            // This is a comment so do something with xmlRdr.value

......等等

第2部分 - 对于那些想要使用LINQ的人(不是真的有所作为)......

XDocument xml = XDocument.Load("joker.xml");
var commentNodes = from n in xml.Descendants("server")
                where n.NodeType == XmlNodeType.Comment
                select n;

foreach(XNode node in commentNodes)
{ 
  // now you are iterating over the comments it has found
}

答案 3 :(得分:-2)

您可以使用此示例在列表&lt;&gt;!

中返回您的xml
using (XmlTextReader xmlReader = new XmlTextReader(your file.xml))
        {
            XDocument xdoc = XDocument.Load(xmlReader);
            var programs= from programItem in xdoc.Root.Elements()
                          select new yourclass {
                Id  = Convert.ToInt32( programItem.Attribute("Id").Value),
                value1 = programItem.Attribute("value1").Value,
                value2 = programItem.Attribute("value2").Value
            };

            result = programs.ToList();
        }