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