簡體   English   中英

從XML提取特定節點

[英]Extract specific nodes from XML

我有一個如下的XML文件:

<catalog>
  <cd Id="2">
    <title>Title2</title>
    <artist>artist2</artist>
    <company>
      <companyName>Company2</companyName>
      <companyAddress1>street1</companyAddress1>
      <companyAddress2>street2</companyAddress2>
      <companyCity>City2</companyCity>
    </company>
    <price>12.90</price>
    <year>1987</year>
  </cd>
  <cd Id="3">
    <title>Title3</title>
    <artist>artist3</artist>
    <company>
      <companyName>Company3</companyName>
      <companyAddress1>street1</companyAddress1>
      <companyAddress2>street2</companyAddress2>
      <companyCity>City3</companyCity>
    </company>
    <price>9.90</price>
    <year>1984</year>
  </cd>
</catalog>

我想根據節點中的Id屬性過濾此源XML,並創建一個新的XML文件,例如:

<catalog>
  <cd Id="2">
    <title>Title2</title>
    <artist>artist2</artist>
    <company>
      <companyName>Company2</companyName>
    </company>
    <price>12.90</price>
  </cd>
  <cd Id="3">
    <title>Title3</title>
    <artist>artist3</artist>
    <company>
      <companyName>Company3</companyName>
    </company>
    <price>9.90</price>
  </cd>
</catalog>

源文件太大,因此我想我需要使用XmlReader。 但是我無法找到一種簡單的方法來基於Id進行過濾並提取所需的節點。 任何幫助表示贊賞。

謝謝

我認為這正是您想要的:

XDocument xdoc = XDocument.Load("File path");//Load XML file

//Delete all elements in company except companyName
xdoc.Descendants("company").Elements().Where(x => x.Name != "companyName").Remove();

//Delete year
xdoc.Descendants("year").Remove();

xdoc.Save("File path");//Overwrite the XML file with the new result

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM