要素を選択しようとしているXML文字列があり、XDocument.Decendents()メソッドについて混乱しています。ここにサンプルXMLがあります。XDocument.Descendants()フィルタが多すぎます
<response>
<control>
<status>success</status>
<dtdversion>3.0</dtdversion>
</control>
<operation>
<authentication>
<status>success</status>
<userid>jsmith</userid>
<companyid>1621876182</companyid>
<sessiontimestamp>2017-10-23T11:57:27-07:00</sessiontimestamp>
</authentication>
<result>
<status>success</status>
<function>GetFields</function>
<controlid>723973</controlid>
<data listtype="All" count="1">
<type fieldname="ID">User Id</type>
<type fieldname="FIRSTNAME">User First Name</type>
<type fieldname="LASTNAME">User Last Name</type>
<type fieldname="MIDDLEINITIAL">User Middle Initial</type>
<type fieldname="ADDRESS1">User Address 1</type>
<type fieldname="ADDRESS2">User Address 1</type>
<type fieldname="CITY">City of User Residence</type>
<type fieldname="STATE">State of User Residence</type>
<type fieldname="PHONENUMBER">User Phone Number</type>
<type fieldname="EMAIL">User Email Address</type>
</data>
</result>
</operation>
</response>
私の目標は、data
ノード内のノード値のリストを取得することです。私は次のことが働き、10要素のリストを返すことがわかります。私を混乱させる何
List<string> nodeList = xml.Descendants().Attributes("fieldname").Select(x => x.Value).ToList<string>();
は私が子ノードのための下になります唯一のノードとしてdata
ノードを指定しようとしたことです。私はちょうど"データ"をDescendants()
メソッドのXName
パラメータとして追加しました。
List<string> nodeList = xml.Descendants("data").Attributes("fieldname").Select(x => x.Value).ToList<string>();
この場合、結果はゼロのnodeList
数を返しました。 「fieldname」の属性名を持つXML文書内の他のノードが<data>
ノードの子要素以外のものが選択されないように、どのノードを選択すべきかをより具体的に探求していました。私はなぜ結果がゼロになったのかわからないし、誰かがこれについていくつかの光を当てることを望んでいた。
いくつのエントリがありますか? – Nikolaus
私は10ノードを返すことを期待しています – webworm