xml中的简单字符串替换

时间:2012-08-08 19:02:38

标签: c# .net

我有一个包含相当多XML的字符串,它实际上是描述word文档的xml(document.xml)。我想简单地用一个空字符串替换字符串的一部分,有效地将其从字符串中删除。这听起来很直接,但我没有得到我期望的结果。

以下是一些XML的内容,这只是前10行:

<w:body xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
    <w:p w:rsidR="00CB3A3E" w:rsidP="00257CF7" w:rsidRDefault="008C1E91">
        <w:pPr>
            <w:pStyle w:val="Heading-Title" />
        </w:pPr>
        <w:r>
            <w:t>References</w:t>
        </w:r>
    </w:p>
    <w:sdt> 

正如我所说,这是一个字符串。我只是尝试用空字符串替换<w:t>References</w:t>。我是这样做的:

//xmlBody is the string that is holding the xml
xmlBody.Replace("<w:t>References</w:t>", " ");

这不起作用,当我这样做时,字符串不会改变。我究竟做错了什么?非常感谢任何建议!

4 个答案:

答案 0 :(得分:3)

xmlBody = xmlBody.Replace("<w:t>References</w:t>", "");

Replace函数不会更改源字符串;它返回一个包含所做更改的新字符串。实际上,C#字符串无法更改。如果您查看documentation,则表示它们是不可变的。

答案 1 :(得分:3)

在C#中,字符串不可变 - 一旦创建,就无法更改。 Replace返回一个新的字符串实例。因此,您需要捕获其返回值:

xmlBody = xmlBody.Replace("<w:t>References</w:t>", " ");

作为旁注,用正则表达式解析基于XML的字符串并不是一个好习惯,因为它太脆弱了。考虑使用XDocument或其他类似内容删除您所追求的元素。

答案 2 :(得分:2)

string.replace返回一个新字符串,它不会更改原始字符串

xmlBody = xmlBody.Replace("<w:t>References</w:t>", " ");

答案 3 :(得分:1)

替换不是内联替换...它会返回一个替换的新字符串。