簡體   English   中英

從XML文件中刪除所有文本節點

[英]Remove all text nodes from XML file

我想從XML文件中刪除所有文本節點(但不能刪除任何其他類型的節點)。 我怎樣才能做到這一點?

輸入示例:

<root>
<slideshow id="1">
<Image>hii</Image>
<ImageContent>this</ImageContent>
<Thumbnail>is</Thumbnail>
<ThumbnailContent>A</ThumbnailContent>
</slideshow>
<slideshow id="2">
<Image>hii</Image>
<ImageContent>this</ImageContent>
<Thumbnail>is</Thumbnail>
<ThumbnailContent>B</ThumbnailContent>
</slideshow>
</root> 

預期產量:

<root>
<slideshow id="1">
<Image></Image>
<ImageContent></ImageContent>
<Thumbnail></Thumbnail>
<ThumbnailContent></ThumbnailContent>
</slideshow>
<slideshow id="2">
<Image></Image>
<ImageContent></ImageContent>
<Thumbnail></Thumbnail>
<ThumbnailContent></ThumbnailContent>
</slideshow>
</root> 

怎么樣:

var doc = XDocument.Load("test.xml");
doc.DescendantNodes()
   .Where(x => x.NodeType == XmlNodeType.Text ||
               x.NodeType == XmlNodeType.CDATA)
   .Remove();
doc.Save("clean.xml");

編輯:請注意,以上是在我意識到從XText派生的XCData之前,它XCData更簡單:

var doc = XDocument.Load("test.xml");
doc.DescendantNodes()
   .OfType<XText>()
   .Remove();
doc.Save("clean.xml");

這個問題應該有所幫助: Linq to XML-更新/更改XML文檔的節點

您可以使用Linq打開文檔並更改值或完全刪除節點。

暫無
暫無

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

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