1

我有一个带有尖括号的字符串,如下所示:

<element1>my text here</element1>

当我将它写入控制台或我的 dataGridView 或其他任何地方时,该字符串实际上看起来像这样。但是,我正在尝试将其编写为 XML 文档的一部分。

一切都很好,除了在写入的 xml 文件中,上面显示为:

&lt;element1&gt;my text here&lt;/element1&gt;

我怎样才能把它写成我的文字而不是代码?

谢谢!

-阿迪娜

4

5 回答 5

4

如果要将其保留为字符串而不转义所有元素,请使用 CDATA 块:

<xml><![CDATA[<element1>my text here</element1>]]></xml>
于 2008-12-07T14:48:20.257 回答
2

我不清楚您的目标:您希望最终的 XML 文件是什么样的?

如果您像下面这样输出它,那么 XML 解析器会将“<element1>”解释为结构的一部分,而不是内容。

<container><element1>my text here</element1></container>

至于将您的 XML 编写为字符串,这是一个坏主意:转义是有原因的,除非您非常详细地了解 XML 规范,否则您几乎肯定会犯错误。

于 2008-12-07T16:30:22.747 回答
2

当我将它写入控制台或我的 dataGridView 或其他任何地方时,该字符串实际上看起来像这样。

您永远不应该直接操作 XML 文档的字符串值。

关于软件开发,我没有做很多绝对的陈述,但那几乎总是正确的。如果您对 XML 没有深入的经验,这绝对是正确的。我猜想 XML 新手遇到的 25% 或更多的问题是由这个引起的。

如果将 XML 加载到 XmlDocument 中,找到包含它的元素并写出该元素的 InnerText 属性,则该字符串将正确显示。DOM 正确地将文本往返传入和传出 XML,对其进行编码,以便文本中的标记不会干扰 XML 的标记。你想要那个。

我观察到的另一件事:至少 90% 的情况下,使用 CDATA 的建议在技术上是正确的,但在其他所有方面都是错误的。使用 CDATA 是最后的手段。

于 2008-12-08T19:31:34.193 回答
0

这是以HTML 编码格式编写的,因为您的应用程序必须认为它是内容而不是实际的 XML 元素,因此它会像内容一样对其进行转义。

您是否尝试过使用 XmlWriter 类?

于 2008-12-07T14:32:39.523 回答
-1

唔。

所以我想我已经决定不使用 XMLSerializer(我认为这是一种奇特的做事方式),而是构建所有元素的字符串并将它们写成普通的文本文件。这似乎有效并且足够简单。我还有其他一些独特/奇怪的东西,这种做法让这一切变得简单多了。:)

-阿迪娜

于 2008-12-07T15:28:07.850 回答