删除具有命名子元素的元素

时间:2015-04-09 11:15:56

标签: c# xml

我有XML,我使用此代码删除标签:

XElement xmlElement = XElement.Parse(xml);
xmlElement.XPathSelectElement("//"+ tagToRemove).Remove();

但现在我有另一个问题。在上面的方法我删除一个特定的标签,但现在我想删除下面的标签。在XML中有很多名为param的标记,所以我不能删除它。

我在想的是删除子标签所在的标签 name = ERP_OUTPUT_400_20_DOCUMENTATIONLANGUAGE_field

<param type=\"read-only\" committed=\"no\" changed=\"no\" visible=\"yes\" no=\"1\">
    <name>ERP_OUTPUT_400_20_DOCUMENTATIONLANGUAGE_field</name>
    <desc>ERP OUTPUT 400 20 DOCUMENTATIONLANGUAGE</desc>
    <val>SV;</val>
    <val-desc>SV;</val-desc>
    <domain name=\"function\" />
    <aux>
        <prop name=\"hidden\">no</prop>
    </aux>
</param>

我该怎么做?

1 个答案:

答案 0 :(得分:2)

要选择具有子元素<name>值等于特定名称的元素,可以使用以下XPath查询:

//element_name[name='specific_name']

基于现有代码的示例:

var name = "ERP_OUTPUT_400_20_DOCUMENTATIONLANGUAGE_field";
var xpath = String.Format("//{0}[name='{1}']", tagToRemove, name);
xmlElement.XPathSelectElement(xpath).Remove();