Удалить все текстовые узлы из файла XML - PullRequest
0 голосов
/ 13 октября 2011

Я хочу удалить все текстовые узлы (но не любой другой тип узла) из файла 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> 

Ответы [ 2 ]

7 голосов
/ 13 октября 2011

Как насчет:

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

РЕДАКТИРОВАТЬ: Обратите внимание, что выше было до того, как я понял, что XCData происходит от XText, что приводит к более простому:

var doc = XDocument.Load("test.xml");
doc.DescendantNodes()
   .OfType<XText>()
   .Remove();
doc.Save("clean.xml");
0 голосов
/ 13 октября 2011

Этот вопрос должен помочь: Linq to XML - обновить / изменить узлы документа XML

Вы можете использовать Linq, чтобы открыть документ и изменить значения или вообще удалить узлы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...