C# 使用LINQ对XML元素内的双引号进行编码

C# 使用LINQ对XML元素内的双引号进行编码,c#,xml,encoding,linq-to-xml,double-quotes,C#,Xml,Encoding,Linq To Xml,Double Quotes,我正在将一个XML字符串解析为如下所示的XDocument(使用XDocument.Parse) 或 如何让双引号显示为“而不是\” 更新:也许这可以更好地解释: var origXml = "<Root><Item>Here is \"Some text&quot;</Item></Root>"; Console.WriteLine(origXml); var xmlDoc = System.Xml.Linq.XDocument.Pars

我正在将一个XML字符串解析为如下所示的XDocument(使用XDocument.Parse)

如何让双引号显示为
而不是
\”

更新:也许这可以更好地解释:

var origXml = "<Root><Item>Here is \"Some text&quot;</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);
var origXml=“这里是\“一些文本”;
Console.WriteLine(origXml);
var xmlDoc=System.Xml.Linq.XDocument.Parse(origXml);
var modifiedXml=xmlDoc.ToString(System.Xml.Linq.SaveOptions.DisableFormatting);
控制台写入线(modifiedXml);
我从中得到的结果是:

<Root><Item>Here is "Some text&quot;</Item></Root>
<Root><Item>Here is "Some text"</Item></Root>
这里是“一些文本”
这里是“一些文本”
我希望输出为:

<Root><Item>Here is "Some text&quot;</Item></Root>
<Root><Item>Here is "Some text&quot;</Item></Root>
这里是“一些文本”
这里是“一些文本”

未测试,不知道这是否适合您,但请尝试更换此解决方案

var origXml = "<Root><Item>Here is \"Some text&quot;</Item></Root>";
var origXml=“这里是\“一些文本”;
用这个

var origXml = "<Root><Item>Here is \"Some text&amp;quot;</Item></Root>";
var origXml=“这里是\”一些文本&;引用;";

您应该使用确保字符编码正确。但是,我不确定您是否可以在不使用自己的类来输出文本的情况下获得所需的准确输出。

实际上,我并不特别理解这两者的必要性。
仅在属性值中需要。您可能是对的。我用来读取XML字符串的第三方工具给出了一个错误。我能看到的唯一不同之处是双引号在XML字符串中的显示方式。我希望将它们从\“改为”会起作用,但似乎不起作用。基于上述内容,我在VB.NET中进行了测试(从XDocument.Parse读取字符串XML,添加新的XElement,写回字符串,保存字符串),它工作得很好,只有双引号,没有转义符。除了上述内容之外,您是否正在做一些有助于解决问题的事情?您正在使用的是什么工具给您带来了问题?如果它不能读取XML,我想避免它。就XML而言,“和”在各个方面都是完全相同的,就XML解析器而言,如果不亲自手动处理输出字符串,就无法控制写入的内容。也许你能解释为什么你想要这种奇怪的行为?
var origXml = "<Root><Item>Here is \"Some text&quot;</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&quot;</Item></Root>
<Root><Item>Here is "Some text"</Item></Root>
<Root><Item>Here is "Some text&quot;</Item></Root>
<Root><Item>Here is "Some text&quot;</Item></Root>
var origXml = "<Root><Item>Here is \"Some text&quot;</Item></Root>";
var origXml = "<Root><Item>Here is \"Some text&amp;quot;</Item></Root>";