XML の文字列をこのような XDocument に解析しています (XDocument.Parse を使用)
<Root>
<Item>Here is "Some text"</Item>
</Root>
次に、XML を少し操作して、入ってきたのと同じように、文字列として送り返したいと思います。
<Root>
<Item>Here is "Some text"</Item>
<NewItem>Another item</NewItem>
</Root>
しかし、私が得ているのは
<Root>
<Item>Here is \"Some text\"</Item>
<NewItem>Another item</NewItem>
</Root>
二重引用符がエンコードではなくエスケープされていることに注目してください。
これは私が使用するかどうかに関係なく起こります
ToString(SaveOptions.DisableFormatting);
また
var stringWriter = new System.IO.StringWriter();
xDoc.Save(stringWriter, SaveOptions.DisableFormatting);
var newXml = stringWriter.GetStringBuilder().ToString();
"
二重引用符をとしないようにするにはどうすればよい\"
ですか?
更新:多分これはそれをよりよく説明することができます:
var origXml = "<Root><Item>Here is \"Some text"</Item></Root>";
Console.WriteLine(origXml);
var xmlDoc = System.Xml.Linq.XDocument.Parse(origXml);
var modifiedXml = xmlDoc.ToString(System.Xml.Linq.SaveOptions.DisableFormatting);
Console.WriteLine(modifiedXml);
これから得られる出力は次のとおりです。
<Root><Item>Here is "Some text"</Item></Root>
<Root><Item>Here is "Some text"</Item></Root>
出力を次のようにしたい:
<Root><Item>Here is "Some text"</Item></Root>
<Root><Item>Here is "Some text"</Item></Root>