【发布时间】:2012-08-10 11:15:16
【问题描述】:
我有一个 xmlDoc,这是其中的一部分:
<Main>
<Set>
<MId>1</MId>
<RName>
<MetaData>
<PrdctName>
Test 1
</PrdctName>
</MetaData>
</RName>
</Set>
<Set>
<MId>1</MId>
<RName>
<MetaData>
<PrdctName>
Test 2
</PrdctName>
</MetaData>
</RName>
</Set>
<Set>
<MId>1</MId>
<RName>
<MetaData>
<PrdctName>
Test 3
</PrdctName>
</MetaData>
</RName>
</Set>
<Set>
<MId>2</MId>
<RName>
<MetaData>
<PrdctName>
Test 1
</PrdctName>
</MetaData>
</RName>
</Set>
</Main>
通过选择一个prdctName,必须从xmlDoc 中删除其余部分。例如,如果我选择“测试 1” 结果必须是:
<Main>
<Set>
<MId>1</MId>
<RName>
<MetaData>
<PrdctName>
Test 1
</PrdctName>
</MetaData>
</RName>
</Set>
<Set>
<MId>2</MId>
<RName>
<MetaData>
<PrdctName>
Test 1
</PrdctName>
</MetaData>
</RName>
</Set>
</Main>
问题是我不知道如何删除标签。 所以删除后的 xml 现在看起来像:
<Main>
<Set>
<MId>1</MId>
<RName>
<MetaData>
<PrdctName>
Test 1
</PrdctName>
</MetaData>
</RName>
</Set>
<Set/>
<Set/>
<Set>
<MId>2</MId>
<RName>
<MetaData>
<PrdctName>
Test 1
</PrdctName>
</MetaData>
</RName>
</Set>
</Main>
我还必须编写哪些代码才能删除标签?
这是我现在使用的代码的一部分:
foreach (XmlNode chkNode in nodes)
{
string currentName = "Test 1";
if (!nameDict.ContainsKey(currentName))
chkNode.ParentNode.RemoveAll();
}
【问题讨论】:
-
在您的最后一个 XML 示例中,我假设
</Set></Set></Set>的出现实际上应该是</Set><Set></Set>? -
当然必须有一个标签。有一次我在编辑这个问题,但在我保存问题后它就消失了。
-
No 是我得到的,这是正确的。第一个用于第一个
标签,另外两个来自已删除的节点。 -
</Set></Set></Set>永远不会正确,因为它不会产生有效的 XML。 -
对不起,这两个删除的节点当然必须是
。