2016-09-02 10 views
0

属性値が "id = x"のXElementを使用してXML応答の特定のノードから値を取得しようとしています。属性が特定の値を持つXMLコードから値を取得する[XElementを使用する]

これはXMLレスポンスのようです。

<customfields> 
<group id="6" title="Help Desk Ticket Categories" displayorder="1"> 
<field id="73" title="Second level classification" type="6" name="zscyz3a30h1q"><![CDATA[-- unassigned --]]></field> 
</group> 
<group id="9" title="For CS" displayorder="4"> 
<field id="82" title="CS Root Cause Classification " type="6" name="pye19ntzyp8v"><![CDATA[--Unassigned--]]></field> 
<field id="84" title="Staff Responsible" type="6" name="7gy8bfu8tidv"><![CDATA[-- unassigned --]]></field> 
<field id="93" title="Customer Package" type="6" name="fxk9rqtlw0fa"><![CDATA[--Unassigned--]]></field> 
</group> 
<group id="2" title="Client Info" displayorder="3"> 
<field id="5" title="Customer Name" type="1" name="77004d0323"><![CDATA[BigG]]></field> 
<field id="17" title="Account Number" type="1" name="d1abccc1a0" /><![CDATA[123]]></field> 
<field id="16" title="Contact Name" type="1" name="93d2b9adf1" /><![CDATA[george]]></field> 
<field id="13" title="Phone No." type="1" name="0aa31be4b8" /><![CDATA[456]]></field> 
</group> 
</customfields> 

この

は私が(働く)今使っているコードですが、私はむしろ、「ID」と フィールドの値を取得したい=「5」子孫指標を通じて取得した値を持っているのではなく、 。

答えて

0

ため

XElement root = XElement.Parse(GetTicketCustomFields(ticketID)); 
    kCustomer = (string)(from el in root.Descendants("field") select el).ElementAt(4); 
    kAccountNumber = (string)(from el in root.Descendants("field") select el).ElementAt(5); 
    kName = (string)(from el in root.Descendants("field") select el).ElementAt(6); 
    kPhone = (string)(from el in root.Descendants("field") select el).ElementAt(7); 

おかげで私は、XPath使用する

var root = XDocument.Parse(xmlstring); 
var accountNumber = root.XPathSelectElement("//field[@id='17']").Value; 

またはLinq2Xmlを使用して

var accountNumber = root.XPathSelectElement("//field[@title='Account Number']").Value; 

も可能である

var accountNumber = root.Descendants("field") 
        .FirstOrDefault(F => F.Attribute("id").Value == "17") 
        .Value; 
0

XPathを@ L.Bとして使用します。示唆している。 XPath Information

Visual Studioを使用している場合は、あなたの方法であなたを得るために、あなたが与えられた要素や属性のXPathを見つけることができ、本当にあなたによって書かれたプラグインがあります

関連する問題