我正在使用LinqXML創建一個XML文件。LINQ to XML XElement節點
string value = "Steet,<BR> </BR> City";
XElement address = new XElement("Address", value);
一次我寫的xml文件,顯示的地址值作爲Steet,<BR> </BR>
我只是需要,因爲它是和原版一樣。 (即使它不能很好地形成)
我正在使用LinqXML創建一個XML文件。LINQ to XML XElement節點
string value = "Steet,<BR> </BR> City";
XElement address = new XElement("Address", value);
一次我寫的xml文件,顯示的地址值作爲Steet,<BR> </BR>
我只是需要,因爲它是和原版一樣。 (即使它不能很好地形成)
那麼,如果不能很好地形成的東西那就不要指望能夠把它當作XML。因此,如果你想把沒有格式良好的HTML標記放到一個XML元素中,那麼考慮使用CDATA部分,例如
string value = "Steet,<BR> </BR> City";
XElement address = new XElement("Address", new XCData(value));
這將導致
<Address><![CDATA[Steet,<BR> </BR> City]]></Address>
如果你想解析值作爲XML然後在片段模式一個XmlReader爲此例如
static void Main()
{
string value = "Steet,<BR> </BR> City";
XElement address = new XElement("Address", ParseFragment(value));
Console.WriteLine(address);
}
static IEnumerable<XNode> ParseFragment(string fragment)
{
using (StringReader sr = new StringReader(fragment))
{
using (XmlReader xr = XmlReader.Create(sr, new XmlReaderSettings() { ConformanceLevel = ConformanceLevel.Fragment }))
{
xr.Read();
XNode node;
while (!xr.EOF && (node = XNode.ReadFrom(xr)) != null)
{
yield return node;
}
}
}
}
導致
<Address>Steet,<BR> </BR> City</Address>
我不認爲你需要改變什麼。 <
和>
是尖括號如何在XML中轉義。讀取字符串值時,XML解析器會自動將它們重新轉換爲字面尖括號。 CDATA只是另一種逃避尖括號的方式。在這種情況下,他們都完成了同樣的事情。如果您使用原始代碼並使用XML解析器讀取<Address>
節點的值,則返回的字符串將是Street,<BR> </BR> City
。改變轉換爲CDATA的方法實際上並沒有改變任何東西,除了使你的XML難以閱讀。
如果您希望<BR />
標記實際上是XML文檔的一部分,那麼您應該將其作爲文檔的一部分。也就是說...
new XElement("Address", "Street,", new XElement("BR"), " City")
謝謝馬丁。由於我是新的投票,只允許我增加1。再次感謝這個例子。 – dps123 2011-01-27 18:30:04