我正在使用LinqXML创建XML文件。
string value = "Steet,<BR> </BR> City";
XElement address = new XElement("Address", value);
编写xml文件后,地址值显示为Steet,<BR> </BR>
我只是需要,就像它是原始的。 (即使形成不好)
答案 0 :(得分:4)
如果那些东西形式不好,那么不要指望它能够把它当作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>
答案 1 :(得分:1)
我认为你不需要改变任何东西。 <
和>
是如何在XML中转义尖括号。在解析字符串值时,XML解析器会自动将它们转换回文字尖括号。 CDATA只是逃避尖括号的另一种方式。在这种情况下,他们都完成了同样的事情。如果您使用原始代码并使用XML解析器读取<Address>
节点的值,则返回的字符串将为Street,<BR> </BR> City
。更改转义为CDATA的方法实际上并没有改变任何东西,除了让你的XML(可以说)更难阅读。
如果您希望<BR />
标记实际上是XML文档的一部分,那么您应该将其作为文档的一部分。那就是说......
new XElement("Address", "Street,", new XElement("BR"), " City")
答案 2 :(得分:0)
你需要将它包装在CDATA中以保存它