【问题标题】:Getting whitespace while reading XML using XMLTextReader使用 XMLTextReader 读取 XML 时获取空格
【发布时间】:2014-07-16 11:15:35
【问题描述】:

我正在使用 C#.net 中的 XMLTextReader 读取 XML。 XML的结构如下:

<root attr1="" attr2="">
    <element1>some value</element1>
    <element2>some value</element2>
</root>

reding 属性后,我将控制权转移到 element1。代码如下:

reader.MoveToElement()
if(reader.ReadToDecedent("element1"))
{
    string val= reader.ReadInnerXML();
}

现在阅读本文后,阅读器显示空白。我想再次移动到 element1 并从那里使用 ReadToDecendent 我想移动到 element2。我不能使用 MoveToContent(),因为我必须遵循相同的流程。

那么如何在阅读器内部文本之后移动到 element1?

【问题讨论】:

    标签: c# .net xml-parsing xmltextreader


    【解决方案1】:

    您是否考虑过使用XPathDocument 和相关类?它看起来像这样:

    var _xml = "<xml><elements><element1>some text</element1><element2>some more text</element2></elements></xml>";
    var xPathDoc = new XPathDocument(XmlReader.Create(new StringReader(_xml)));
    var nav = xPathDoc.CreateNavigator();
    var node = nav.SelectSingleNode("//element1");  // with xpath exp you can pick out specific tags
    var innerText = node.Value;
    

    现在,如果您只是将 element 作为标签的名称,而不是 element1、element2、...,您可以遍历所有元素标签:

    var nodes = nav.Select("//element");  // selects all element tags
    while(nodes.MoveNext()){
        //do something
    }
    

    这可能是查询 xml 文档的一种更简单的方法。另外,如果您想要具有特定属性的标签,xpath 表达式将为//element[attr1=\"atrribute_value\"]

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多