像使用C#读取python的lxml一样读取XML文件吗?

  <Connections>
     <Connection ID = "1" Source="1:0" Sink="4:0"/>
     <Connection ID = "2" Source="2:0" Sink="4:1"/>
     <Connection ID = "3" Source="2:0" Sink="5:0"/>
     <Connection ID = "4" Source="3:0" Sink="5:1"/>
     <Connection ID = "5" Source="4:0" Sink="6:0"/>
     <Connection ID = "6" Source="5:0" Sink="7:0"/>
  </Connections>

当我需要从先前的XML代码获取信息时,可以如下使用Python的lxml.

def getNodeList(self):
    connection = self.doc.find('Connections')
    cons = connection.find('Connection')

    for con in cons.iter():
        con.get("ID") # get attribute
        ...

>我可以使用哪些C#库/函数来获取python的lxml之类的信息?我的意思是,我可以在C#中使用find()/ iter()还是类似的东西?
>哪些C#库与python的lxml类似?

添加

根据dtb的回答,我可以获得所需的信息.

using System;
using System.Xml;
using System.Xml.Linq;

namespace HIR {
  class Dummy {

    static void Main(String[] argv) {

      XDocument doc = XDocument.Load("test2.xml");

      var connection = doc.Descendants("Connections"); // .First();
      var cons = connection.Elements("Connection");

      foreach (var con in cons)
      {
        var id = (string)con.Attribute("ID");
        Console.WriteLine(id);
      }
    }
  }
}

我必须删除“ First()”以避免编译器错误.使用mono,我可以运行以下命令来获取二进制文件.

dmcs /r:System.Xml.Linq main.cs

解决方法:

您要使用LINQ-to-XML

void GetNodeList()
{
    var connection = this.doc.Descendants("Connections").First();
    var cons = connection.Elements("Connection");

    foreach (var con in cons)
    {
        var id = (string)con.Attribute("ID");
    }
}
上一篇:python-从一个文件中解析特定的XML属性,并将其追加到另一个文件中,前提是第二个文件中存在另一个属性


下一篇:用Python解析HTML-有些页面可以工作,有些不能…?