如何从一个XML元素中删除所有属性?

时间:2017-11-21 14:31:55

标签: c# regex string replace xml-parsing

我有以下包含XML的字符串:

var mystring = "<?xml version="1.0" encoding="UTF-8"?><?adf version="1.0"?>
<adf>
<example url="https://someurl.com/?id=123&amp;hash=6WHnYZwE" 
anotherurl="https://someurl.com/status?id=123;hash=6WHnYZwE" something="Hi">
    <status>new</status>
    <requestdate>2017-11-15T19:45:23-05:00</requestdate>
    <Apples>
        <color>red</color>
        <origin>Washington</make>
    </Apples>
</example>
</adf>";

我想从<example>元素中删除属性,以便

<example url="https://someurl.com/?id=123&amp;hash=6WHnYZwE" anotherurl="https://someurl.com/status?id=123;hash=6WHnYZwE" something="Hi">

变成这个

<example>

我尝试使用String.Replace将属性替换为空字符串,但属性并不总是相同。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:0)

我的XML解析有点生疏,所以我确信这可以改进。

public void DeleteContentsOfExampleElement()
{
    var mystring = @"<?xml version=""1.0"" encoding=""UTF-8""?><?adf 
version=""1.0""?>  
<adf>  
<example url=""https://someurl.com/?id=123&amp;hash=6WHnYZwE"" 
anotherurl=""https://someurl.com/status?id=123;hash=6WHnYZwE"" 
something=""Hi"">
<status>new</status>  
<requestdate>2017-11-15T19:45:23-05:00</requestdate>
<Apples>
    <color>red</color>
    <origin>Washington</origin>
</Apples>
</example>
</adf>";
    var document = new XmlDocument();
    document.LoadXml(mystring);
    var exampleElements = document.GetElementsByTagName("example");
    foreach (XmlNode exampleElement in exampleElements)
    {
        exampleElement.Attributes?.RemoveAll();
    }
}