我有一个Xml文档,其中一些元素如下所示:
<rootNode attib1="qwerty" >
<subNode1>W</subNode1>
<subNode2>X</subNode2>
<subNode3>Y</subNode3>
<subNode4>Z</subNode4>
ABC
</rootNode>
我的目标是从上面的例子中得到“ABC”。我试着在XmlElement类和XmlReader类中的一堆属性中查看InnerText(返回“WXYZABC”)和InnerXml和Value(返回null)属性。不知怎的,我没有看到提取我需要的数据的优雅方式。
有人可以帮帮我吗?
提前致谢。
答案 0 :(得分:3)
跟上这个:
string xml = @"<rootNode attib1=""qwerty"" >
<subNode1>W</subNode1>
<subNode2>X</subNode2>
<subNode3>Y</subNode3>
<subNode4>Z</subNode4>
ABC
</rootNode>";
var xElement = XElement.Parse(xml);
xElement.Elements().Remove();
xElement.Value.Dump();
它的作用是删除所有已知的元素,并留下您正在寻找的文本。
答案 1 :(得分:1)
基于@djechelon的出色建议,我似乎找到了解决方案:
XmlDocument xdoc = new XmlDocument();
xdoc.Load(@"D:\Test.xml");
XmlElement xmlElement = xdoc.DocumentElement;
foreach (XmlNode node in xmlElement.ChildNodes)
if (node.NodeType == XmlNodeType.Text
&& !string.IsNullOrWhiteSpace(node.Value))
Console.WriteLine(node.Value.Trim());
以上使用了一个简单的事实,即内部文本也是XmlNode,作为XmlElement的ChildNodes集合的一部分。
感谢大家的好评!
答案 2 :(得分:0)
尝试XmlElement.Value
编辑:这是错误的方法,因为它总是在元素节点上返回NULL。