2017-04-20 15 views
1

私はいくつかの助けが必要です。 (値がXmlパスプロパティ名を読み取る方法

の間、私はこの

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

のようなものを行っているが、それが可能です

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

と私は、プロパティ名と値を読みたい:私はこのようなXMLを持っていますその場合、名前とプロパティを取得するために使用できるイテレータは1つだけです。

答えて

0

2番目のイテレータのみを使用し、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ツー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; 
} 
関連する問題