我正在使用XDocument
来缓存文件列表。
<file id="20" size="244318208">a file with an &ersand.txt</file>
在这个例子中,我使用XText
,让它自动转义文件名中的字符,例如&amp;与&
<file id="20" size="244318208"><![CDATA[a file with an &ersand.txt]]></file>
在这一篇中,我使用XCData
让我使用文字字符串而不是转义字符串,因此它在我的应用程序中显示在XML中。
我想知道在任何特定条件下,他们中的任何一个是否比另一个更好,或者它是否仅仅是个人品味。此外,如果它意味着什么,文件名可能包含也可能不包含非法字符。
答案 0 :(得分:5)
我不会显式使用XText
或XCData
- 我只提供一个字符串,让LINQ to XML做任何想做的事。
我认为非CDATA版本通常更清晰。是的,amperands是逃逸的 - 而且<
也是如此 - 但是仍然比CDATA
开始/结束部分少得多。
不要忘记,人类很少能够看到XML表示本身 - 这个想法是它是一种信息传输,当你需要时,它可以在表示中合理地读取。我不会太在意它。
答案 1 :(得分:3)
两者基本相同,没有具体的“最佳实践”。
就个人而言,我保留<![CDATA[]]>
表示需要大量转义的大量文本(比如代码或HTML标记)。
在这种特定情况下,我宁愿将&
转义为&
,如第一个示例所示。
答案 2 :(得分:1)
大多数文件名不包含符号,或者不包含符号。所以请使用XText。保留XCData用于您期望很多这些字符的情况,例如在XML文档中嵌入和HTML片段时。
基本原理:序列化和解析文本的CPU利用率差异完全可以忽略不计。但存储,带宽或内存需求存在(小)差异。在其他条件相同的情况下,请使用占用空间最小的格式(即使差异很小)。
答案 3 :(得分:0)
没关系。
它们都是有效的XML,它们都具有相同的含义。