2014-04-03 162 views
1

有沒有辦法獲得特定b屬性值的列表(例如r4)?
List<string>包含: 「p3e3」 和 「p3e4」獲取xml中的屬性值列表

<a> 
    <b id="r4" Name="b 4"> 
    <P> 
     <Pr id="p3e3" /> 
     <Pr id="p3e4" /> 
    </P> 
    </b> 
    <b id="r5" Name="b 5"> 
    .... 
    </b> 
</a> 

我得到的最多的是一個List<XElement>包含 「<Pr id="p3e3" />」 和 「<Pr id="p3e4" />

回答

1
var xdoc = XDocument.Load(path_to_xml); 
var result = xdoc.Root.Elements("b") 
       .Where(b => (string)b.Attribute("id") == "r4") 
       .SelectMany(b => b.Element("P").Elements("Pr")) 
       .Select(pr => (string)pr.Attribute("id")); 

或者使用XPath:

var result = xdoc.XPathSelectElements("a/b[@id='r4']/P/Pr") 
       .Select(pr => (string)pr.Attribute("id")); 
+0

嗨!謝謝!我得到了相同的結果,但我只需要Pr ID,即p3e3和p3e4作爲字符串。因爲下一步將檢查我從另一個地方獲得的ID是否在我的ID列表 – user990635

+0

@ user990635內,然後將元素投影到ID:'Select(pr =>(string)pr.Attribute(「id」)) '。我更新了答案 –