요소를 선택하려고하는 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>();
이 경우의 결과는 0의 수를 반환 nodeList
. 나는 XML 문서에서 "fieldname"이라는 속성 이름을 가진 다른 노드가 <data>
노드의 자식 요소가 아닌 다른 노드를 선택하지 않도록 노드를 선택해야한다는 것을보다 구체적으로 설명하고자했습니다. 나는 왜 내가 제로 결과를 얻었는지 확신 할 수 없었고 누군가가 이것에 관해 어떤 생각을 밝힐 수 있기를 희망했다.
몇 개의 항목을 예상합니까? – Nikolaus
나는 10 개의 노드가 돌아올 것을 기대하고있다. – webworm