我有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的内容
如何解决?
答案 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())
。