1

かなりの量のXMLを含む文字列があります。実際には、document(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
xmlBody = xmlBody.Replace("<w:t>References</w:t>", "");

置換関数はソース文字列を変更しません。変更が加えられた新しい文字列を返します。実際、C#文字列は変更できません。ドキュメントをチェックすると、不変であると書かれています。

于 2012-08-08T19:04:49.453 に答える
3

C#では、文字列は変更できません。一度作成すると、変更できません。Replace文字列の新しいインスタンスを返します。したがって、その戻り値をキャッチする必要があります。

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

補足として、XMLベースの文字列を正規表現で解析することは、脆弱すぎるため、適切な方法とは見なされません。XDocument必要な要素を削除するために、またはそのようなものを使用することを検討してください。

于 2012-08-08T19:06:15.390 に答える
2

string.replaceは新しい文字列を返しますが、元の文字列は変更されません

試す

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

置換はインライン置換ではありません...置換が行われた新しい文字列を返します。

于 2012-08-08T19:05:38.917 に答える