2010-03-30 73 views
-2

我有一个XML文件,如下图所示修剪XML文件

<NewDataSet> 
- <T> 
    <P /> 
    <C>1</C> 
    <M /> 
    </T> 
- <T> 
    <P /> 
    <C>1</C> 
    <M /> 
    </T> 
- <T> 
    <P /> 
    <C>1</C> 
    <M /> 
    </T> 
- <T> 
    <P /> 
    <C>1</C> 
    <M /> 
    </T> 
- <T> 
    <P /> 
    <C>2</C> 
    <M>44</M> 
    </T> 
- <T> 
    <P /> 
    <C>2</C> 
    <M>45</M> 
    </T> 
- <T> 
    <P /> 
    <C>2</C> 
    <M>46</M> 
    </T> 
</NewDataSet> 

问题 - Basicall我应该删除块

<T> 
    <P /> 
    <C>1</C> 
    <M /> 
    </T> 

不具有<M>价值

+5

你在说什么? – 2010-03-30 09:46:18

+0

一些更多的信息会有帮助。你想保存输出还是只返回没有显示M值的T元素? – Myster 2010-03-30 09:50:15

+0

基本上我想删除T标记及其子标签不具备并购标签 – Sathish 2010-03-30 09:55:03

回答

0

你可能想看看到Linq-to-XML

你可以查询所有XElem包含一个空M元素的元素,并从其父元素中删除这些元素。

采取例如:

from element in _yourXDocument.Descendants("NewDataSet") 
select element 
where element.Descendants("M").Value = String.Empty; 

对于.NET 2.0,使用XmlDocument

+0

值我使用DOTNET的2.0框架Linq的工作是否在这里减磅此XML文件????? – Sathish 2010-03-30 09:52:44

+0

噢废话,没有也不会:(对不起,我是假设你正在使用的.Net 3.5 – Webleeuw 2010-03-30 09:54:11

1

将整个文档加载到XmlDocument(或XDocument)中,选择XPath类似/T[not(./M)]的节点并删除它们。

+0

我使用DOTNET的2.0框架,可以请你帮我一个代码 – Sathish 2010-03-30 09:52:17

+1

XmlDocument的是一个.NET 2.0类,请查一下在MSDN上。 – Webleeuw 2010-03-30 10:00:21