在XML中存储文件名的正确方法是什么?

时间:2012-06-13 20:42:30

标签: c# xml formatting linq-to-xml

我正在使用XDocument来缓存文件列表。

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

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

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

在这一篇中,我使用XCData让我使用文字字符串而不是转义字符串,因此它在我的应用程序中显示在XML中。

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

4 个答案:

答案 0 :(得分:5)

我不会显式使用XTextXCData - 我只提供一个字符串,让LINQ to XML做任何想做的事。

我认为非CDATA版本通常更清晰。是的,amperands是逃逸的 - 而且<也是如此 - 但是仍然比CDATA开始/结束部分少得多。

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

答案 1 :(得分:3)

两者基本相同,没有具体的“最佳实践”。

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

在这种特定情况下,我宁愿将&转义为&amp;,如第一个示例所示。

答案 2 :(得分:1)

大多数文件名不包含符号,或者不包含符号。所以请使用XText。保留XCData用于您期望很多这些字符的情况,例如在XML文档中嵌入和HTML片段时。

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

答案 3 :(得分:0)

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