XmlReader Innertext问题

时间:2010-12-13 19:18:04

标签: c# .net xml

我有一个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)属性。不知怎的,我没有看到提取我需要的数据的优雅方式。

有人可以帮帮我吗?

提前致谢。

3 个答案:

答案 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。