【问题标题】:parsing XML using linq to xml使用 linq to xml 解析 XML
【发布时间】:2012-01-20 03:19:56
【问题描述】:

我想使用 linq to XML 解析一些大型 XML 文件,但我不知道该怎么做。 我想阅读 <dac> 标签之后的所有 <name> 标签。我必须提到我在 XMl 文件中有许多 <name> 标记,我只想阅读 <dac> 之后的那个标记。如何使用 linq to xml 做到这一点?

这是我的 XML 文件的一个简单示例:
我希望代码返回这样的值:(SSS, HHH, HHH Panel)

<?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>

【问题讨论】:

  • 你想要name标签之后还是dac标签内?
  • 您发布了无效的 XML。请更正。
  • @DanielHilgarth dac 标签块中的名字标签
  • @AVD 我只是复制了整个 XML 的一部分以显示结构,我无法复制所有部分,因为它的大小很大。
  • @Am1rr3 :发布一段更短且有效的 XML 并指定所需的结果。

标签: c# linq-to-xml


【解决方案1】:

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

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); 

【讨论】:

    【解决方案2】:

    有点像

     var names = doc.Root.Descendants("dac").Elements("name");
    

    这假设每个&lt;dac&gt; 最多包含1 个&lt;name&gt; 元素。

    【讨论】:

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