我有一个包含尖括号的字符串,如下所示:
<element1>my text here</element1>
当我将它写入控制台或我的dataGridView或其他任何地方时,字符串看起来像这样。但是,我正在尝试将其写为XML文档的一部分。
一切都很好,除了在写入的xml文件中,上面显示为:
<element1>my text here</element1>
如何将其写为文字文本而不是代码?
谢谢!
-Adeena
答案 0 :(得分:4)
如果要将其保留为字符串而不转义所有元素,请使用CDATA块:
<xml><![CDATA[<element1>my text here</element1>]]></xml>
答案 1 :(得分:2)
我的目标不明确:您希望最终的XML文件看起来像什么?
如果您输出如下所示,那么XML解析器将解释“&lt; element1&gt;”作为结构的一部分,而不是内容。
<container><element1>my text here</element1></container>
至于将XML编写为字符串,这是一个坏主意:转义是有原因的,除非你非常详细地了解XML规范,否则你几乎可以肯定会犯错误。
答案 2 :(得分:2)
当我将它写入控制台或我的dataGridView或其他任何地方时,字符串看起来像这样。
您永远不应该直接操作XML文档的字符串值。
我没有做出很多关于软件开发的绝对陈述,但这个陈述几乎总是如此。如果您对XML没有丰富的经验,那肯定是正确的。我猜想人们对XML有新问题的25%或更多是由此引起的。
如果将XML加载到XmlDocument中,找到包含它的元素,并写出元素的InnerText属性,则字符串将正确显示。 DOM正确地将文本往返于XML中,然后对其进行编码,以便文本中的标记不会干扰XML的标记。你想要那个。
我观察到的另一件事:至少90%的时间,使用CDATA的建议在技术上是正确的,但在其他方面都是错误的。使用CDATA是一种不得已的技术。
答案 3 :(得分:0)
这是以HTML Encoded Format编写的,因为您的应用程序必须认为它是内容而不是实际的XML元素,所以它就像它是内容一样逃避它。
您是否尝试过使用XmlWriter类?
答案 4 :(得分:-1)
嗯。
所以我认为我已经决定不使用XMLSerializer(我认为这是做事的奇特方式)我只是建立所有元素的字符串并将其作为普通文本写出来文件。这看起来很有效,而且很简单。我有其他一些独特/奇怪的东西,这种方式使它变得更加简单。 :)
-Adeena