通过linq获取属性的集合

时间:2012-07-07 14:46:32

标签: c# xml c#-4.0 xml-parsing linq-to-xml

我有一个xml文件。

<BOOK bnumber="1" bname="Book">
    <CHP cnumber="1">
        <VER vnumber="1">This is the sentence 1.</VER>
        <VER vnumber="2">This is the sentence 2.</VER>
        <VER vnumber="3">This is the sentence 3.</VER>
   </CHP>
   <CHP cnumber="2">
        <VER vnumber="1">Hello World 1.</VER>
        <VER vnumber="2">Hello World 2.</VER>
        <VER vnumber="3">Hello World 3.</VER>
        <VER vnumber="4">Hello World 4.</VER>
   </CHP>
   <!--MANY: Thousand records-->
</BOOK>

我想知道attribure&#34; cnumber&#34;。结果:

Chapter={"CHP 1";"CHP 2",....};

我未完成的代码:

XDocument xdoc = XDocument.Load("Book.xml");
        var temp = xdoc.Descendants("CHP").Where(x => x.Attribute("cnumber").Value != "0");

感谢。

1 个答案:

答案 0 :(得分:4)

看起来你可以使用:

var chapters = xdoc.Descendants("CHP")
                   .Select(x => "CHP " + x.Attribute("cnumber").Value)
                   .ToList();

目前尚不清楚为什么你需要一个Where条款 - 当然,你所提供的样本数据都没有cnumber为0,或者缺席{ {1}}。如果您需要考虑到这一点,您应该明确说明。

(你真的需要“CHP”部分开始吗,顺便说一下?为什么不只是cnumber?)