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

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个回答

5

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

我确实认为非CDATA版本通常更清晰。是的,字符和<将被转义-但这仍然比CDATA开始/结束部分少得多。

不要忘记,人们很少看到XML表示本身-这个想法是它是一种传输信息的方式,当您需要查看该表示时,它是相对可读的。我不会过于纠结于此。


3

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

个人而言,我会将<![CDATA[]]>用于大量需要转义的文本(例如代码或HTML标记片段)。

在这种特定情况下,我更倾向于将&转义为&amp;,就像您第一个示例中所示。


1

大多数文件名不会包含&符号或小于号。因此,请使用XText。仅在您预计有大量这些字符的情况下(例如在XML文档中嵌入HTML片段时),请保留XCData。

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


0

没关系。
它们都是有效的XML,而且意思相同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接