【问题标题】:Xml Path how to read property nameXml Path如何读取属性名
【发布时间】:2017-04-20 04:46:49
【问题描述】:

我需要一些帮助。我有这样的xml:

<?xml version='1.0' encoding='utf-8'?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
  </session-factory>
</hibernate-configuration>

我想读取属性名称和值(值介于

我做过类似的事情

XPathNodeIterator iterator = nav.Select("/nh:hibernate-configuration/nh:session-factory/nh:property/@name", manager);
XPathNodeIterator iterator2 = nav.Select("/nh:hibernate-configuration/nh:session-factory/nh:property", manager);

while (iterator.MoveNext() && iterator2.MoveNext())
{
    var name = iterator.Current.Value;
    var property = iterator2.Current.Value;
}

但在这种情况下可能只有一个迭代器可以用来获取名称和属性?

【问题讨论】:

    标签: c# xml hibernate xml-parsing


    【解决方案1】:

    您只能使用第二个迭代器并使用GetAttribute() 读取name 属性值:

    XPathNodeIterator iterator2 = nav.Select("/nh:hibernate-configuration/nh:session-factory/nh:property", manager);
    while (iterator2.MoveNext())
    {
        var navigator = iterator.Current;
        var name = navigator.GetAttribute("name","");
        var property = navigator.Value;
    }
    

    无论如何,使用XmlDocument 或使用如下所示的 LINQ-to-XML,整个任务会简单得多:

    var doc = XDocument.Load("path_to_your_xml.xml");
    XNamespace d = "urn:nhibernate-configuration-2.2";
    foreach(var prop in doc.Descendants(d+"property")
    {
        var name = (string)prop.Attribute("name");
        var property = (string)prop;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 2011-08-28
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多