首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用linq to XML解析xml

使用linq to XML解析xml
EN

Stack Overflow用户
提问于 2011-12-14 18:32:01
回答 2查看 180关注 0票数 1

我想使用linq to XML解析一些大的XML文件,但我不知道如何才能做到这一点。我想读取<dac>标签后面的所有<name>标签。我必须提到我在XMl文件中有很多<name>标签,我只想读取<dac>之后的标签。如何使用linq to xml做到这一点?

下面是我的XML文件的一个简单示例:

我希望代码返回这样的值:(SSS, HHH, HHH Panel)

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<installationTree>
  <folder>
    <id>1</id>
    <name>Company</name>
    <full-path>Door List / Company</full-path>
    <nodes>
      <controller>
        <id>9</id>
        <name>9016 Panel</name>
        <description/>        
        <full-path>Door List / Company / 9016 Panel</full-path>
        <nodes>
          <dac>
            <isOneDoorController>false</isOneDoorController>
            <id>9</id>
            <name>SSS</name>
            <description/>
            <address>1</address>
            <active>true</active>
            <externalId>ID:9_20111123_121106</externalId>
            <mode>standard</mode>    

            <doorCodes/>
            <full-path>Door List / Company / 9016 Panel / SSS</full-path>
            <nodes/>
          </dac>
          <dac>
            <isOneDoorController>false</isOneDoorController>
            <id>10</id>
            <name>HHH</name>
            <description/>
            <address>2</address>
            <active>true</active>

            <doorCodes/>
            <full-path>Door List / Company / 9016 Panel / HHH</full-path>
            <nodes/>
          </dac>
        </nodes>
      </controller>
      <oneDoorController>
        <id>8</id>
        <name>HHH Panel</name>
        <description/>
        <serialnumber>00:06:8e:30:24:24</serialnumber>
        <timezone>Iran</timezone>
        <active>true</active>
        <docUpdater/>
        <nodes>
          <dac>
            <isOneDoorController>true</isOneDoorController>
            <id>8</id>
            <name>HHH Panel</name>
            <description/>
            <address>1</address>
            <active>false</active>            
            <doorCodes/>
          </dac>
          <full-path>Door List / Company / HHH Panel</full-path>
          <nodes/>
        </nodes>
      </oneDoorController>
    </nodes>
  </folder>
</installationTree>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-14 19:10:27

您需要加载XML文档并编写@Henk Holterman建议的语句。

代码语言:javascript
复制
string file = @"c:\file.xml";
XDocument doc = XDocument.Load(file);
var names= doc.Root.Descendants("dac").Elements("name");

foreach (var t in names)
   Console.WriteLine(t.Value); 
票数 3
EN

Stack Overflow用户

发布于 2011-12-14 18:39:57

就像这样

代码语言:javascript
复制
 var names = doc.Root.Descendants("dac").Elements("name");

这假设每个<dac>最多包含1个<name>元素。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8502978

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档