1

我有一个包含相当多的 XML 的字符串,它实际上是描述一个 word 文档(document.xml)的 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

4 回答 4

3

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

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

作为旁注,使用正则表达式解析基于 XML 的字符串并不是一种好的做法,因为它太脆弱了。考虑使用XDocument或一些类似的东西来删除你所追求的元素。

于 2012-08-08T19:06:15.390 回答
3
xmlBody = xmlBody.Replace("<w:t>References</w:t>", "");

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

于 2012-08-08T19:04:49.453 回答
2

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

尝试

xmlBody = xmlBody.Replace("<w:t>References</w:t>", " ");
于 2012-08-08T19:05:28.420 回答
1

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

于 2012-08-08T19:05:38.917 回答