如何使用XDocument读取xml文件?

时间:2017-02-09 15:11:00

标签: c# xml linq-to-xml

我有xml文件:

<?xml version="1.0" encoding="UTF-8"?>
    <root lev="0">
        content of root
        <child1 lev="1" xmlns="root">
            content of child1
        </child1>
    </root>

和下一个代码:

        XDocument xml = XDocument.Load("D:\\test.xml");

        foreach (var node in xml.Descendants())
        {
            if (node is XElement)
            {
                MessageBox.Show(node.Value);
                //some code...
            }
        }

我收到消息:

  

child1的rootcontent的内容

     

child1的内容

但我需要留言:

  

root的内容

     

child1的内容

如何解决?

3 个答案:

答案 0 :(得分:2)

我得到了代码所需的结果:

XDocument xml = XDocument.Load("D:\\test.xml");

foreach (var node in xml.DescendantNodes())
{
    if (node is XText)
    {
        MessageBox.Show(((XText)node).Value);
        //some code...
    }
    if (node is XElement)
    {
        //some code for XElement...
    }
}

感谢关注!

答案 1 :(得分:1)

元素的字符串值是其中的所有文本(包括子元素内部。

如果要获取每个非空文本节点的值:

XDocument xml = XDocument.Load("D:\\test.xml");

foreach (var node in xml.DescendantNodes().OfType<XText>())
{
    var value = node.Value.Trim();

    if (!string.IsNullOrEmpty(value))
    {
        MessageBox.Show(value);
        //some code...
    }
}

答案 2 :(得分:0)

请尝试foreach(XElement node in xdoc.Nodes())