Я анализирую строку 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>