需要帮助来使用LINQ查询复杂的XML以获得复杂的xml结构

时间:2014-04-04 02:28:35

标签: c# xml linq

有人可以告诉我如何使用LINQ查询下面的xml来获取John写的书的名称。我对linq来说是全新的,如果你可以帮助我,那将会很棒。 我试着写一些查询,但它没有用。

<Library>
<Name>Central Library</Name>
<Address>
<Place>West Fort</Place>
<Pin>0088</Pin>
</Address>
<Books>
<Book>
  <Name>Book1</Name>
   <Specifications>
     <Specification>
      <Name>status</Name>
      <value><![CDATA[available]]></value>
     </Specification>
     <Specification>
      <Name>Author</Name>
      <value><![CDATA[John]]></value>
     </Specification>
  </Specifications>
</Book>
<Book>
 <Name>Book2</Name>
  <Specifications>
   <Specification>
    <Name>status</Name>
    <value><![CDATA[Not available]]></value>
   </Specification>
   <Specification>
    <Name>Author</Name>
   <value><![CDATA[Smith]]></value>
   </Specification>
</Specifications>
</Book>
<Book>
<Name>Book3</Name>
 <Specifications>
  <Specification>
   <Name>status</Name>
   <value><![CDATA[Not available]]></value>
  </Specification>
  <Specification>
   <Name>Author</Name>
   <value><![CDATA[John]]></value>
 </Specification>
</Specifications>
</Book>
</Books>
</Library>

1 个答案:

答案 0 :(得分:0)

你可以这样做:

var xmlDocument = XDocument.Load("Xml filePath");

var books = xmlDocument
            .Descendants("Specification")
            .Where(x => ((string) x.Element("value")).Contains("John"))
            .Select(x => x.Parent.Parent);

但请记住,不应该要求代码。首先,您应该做一些研究,阅读文档和教程,花点心思,如果你遇到问题,你应该来找问题。