5

XDocument用来缓存文件列表。

<file id="20" size="244318208">a file with an &amp;ersand.txt</file>

在这个例子中,我使用XText了 , 并让它自动转义文件名中的字符,例如 & 和&amp;

<file id="20" size="244318208"><![CDATA[a file with an &ersand.txt]]></file>

在这一个中,我曾经XCData让我使用文字字符串而不是转义字符串,因此它出现在 XML 中就像它在我的应用程序中一样。

我想知道在任何特定条件下它们中的任何一个是否都比另一个更好,或者这只是个人品味。此外,如果它意味着什么,文件名可能包含也可能不包含非法字符。

4

4 回答 4

5

我不会明确地使用任何一个,XText或者XCData- 我只是提供一个字符串,让 LINQ to XML 做任何它想做的事情。

我确实认为非 CDATA 版本通常更清晰。是的,与号被转义了——而且<也会被转义——但这仍然比CDATA开始/结束部分少得多。

不要忘记,人类很少能看到 XML 表示本身——这个想法是,它是一种信息传输,当您需要时,它在该表示中是可以合理读取的。我不会太挂断它。

于 2012-06-13T20:47:09.103 回答
3

两者本质上是相同的,没有特定的“最佳实践”。

就个人而言,我保留<![CDATA[]]>大量需要大量转义的文本(例如代码或 HTML 标记)。

在这种特定情况下,我宁愿像您的第一个示例一样逃避&to 。&amp;

于 2012-06-13T20:46:04.717 回答
1

大多数文件名不包含 & 符号,或小于符号。所以选择 XText。将 XCData 保留用于需要大量此类字符的情况,例如在 XML 文档中嵌入和 HTML 片段时。

基本原理:序列化和解析文本的 CPU 利用率差异完全可以忽略不计。但在存储、带宽或内存需求方面存在(小)差异。在其他条件相同的情况下,使用占用空间最少的格式(即使差异很小)。

于 2012-06-13T20:54:29.987 回答
0

没关系。
它们都是有效的 XML,并且具有相同的含义。

于 2012-06-13T20:46:30.193 回答