【问题标题】:How to perform xmlparsing using xmlreader for a particular section如何使用 xmlreader 对特定部分执行 xmlparsing
【发布时间】:2011-06-27 12:28:59
【问题描述】:

XML文件结构是这样的。

<?xml version="1.0" encoding="UTF-8"?>
    <Application>
          <Tabs>
             <Tab name="1">
               <title>abcd</title>
               <description>xyz</description>
             </Tab>
             <Tab name="2">
               <title>abcde</title>
               <description>xyzw</description>
             </Tab>
          </Tabs>
         <Files>
         </Files>
    </Application>

我想在 asp.net 2.0 中使用 XmlReader 仅阅读选项卡部分。我感兴趣的值是标题和描述内容。总共有 7 个选项卡,以后也可以增加。因此不能迭代值固定的计数变量。

【问题讨论】:

  • 所有选项卡的name属性值都相同?
  • 不。感谢您指出这一点

标签: c# asp.net xmlreader


【解决方案1】:

如果你可以使用XPathDocument,你可以试试这样的东西。

注意:如果您已经有一个XmlReader 实例,则可以使用采用XmlReader 的构造函数重载,而不是使用StringReader

string xml = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<Application>
      <Tabs>
         <Tab name=""1"">
           <title>abcd</title>
           <description>xyz</description>
         </Tab>
         <Tab name=""2"">
           <title>abcd</title>
           <description>xyzw</description>
         </Tab>
      </Tabs>
     <Files>
     </Files>
</Application>";

string xpath = "/Application/Tabs/Tab/description";

XPathDocument doc = new XPathDocument(new StringReader(xml));
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator nodeIterator = nav.Select(xpath);

foreach (XPathNavigator item in nodeIterator)
{
    Console.WriteLine(item.Value);
}

【讨论】:

    【解决方案2】:
    using (XmlReader reader = XmlReader.Create(inputUrl))
      {
        reader.MoveToContent();
        while (reader.Read())
        {
          if (reader.NodeType == XmlNodeType.Element)
          {
            if (reader.Name == elementName)
            {
              XElement el = XNode.ReadFrom(reader) as XElement;
    
              }
            }
          }
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 2023-03-03
      • 2021-05-12
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多