我解析XML字符串成看起來像這樣一個XDocument(使用XDocument.Parse)編碼XML元素中的雙引號使用LINQ to XML
<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();
怎樣纔可以有雙引號出來爲"
,而不是\"
?
UPDATE:也許這可以更好地解釋:
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>
實際上,我並不特別明白這兩者的必要性。無論如何,'"'只在屬性值中需要。 – Joey 2010-02-18 22:03:31
那麼,你可能是對的。我正在用我的XML字符串讀取的第三方工具發生錯誤。我能看到的唯一不同之處就是雙引號在XML字符串中的樣子。我希望將他們從\「改爲"將工作 - 但它似乎並沒有工作。 – davekaro 2010-02-19 14:10:16
我已經在VB.NET基於上述測試(從XDocument.Parse讀取字符串XML,添加一個新的XElement,寫回到一個字符串,保存字符串),它的工作很好,只是雙引號,並沒有擒縱機構。除了上述有什麼可以幫助解決問題嗎? – 2010-02-20 01:28:30