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

本文关键字:方法 是什么 文件名 XML 存储 存储文件 | 更新日期: 2023-09-27 18:37:09

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

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

在此示例中,我使用了 XText ,并让它自动转义文件名中的字符,例如 & with &amp;

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

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

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

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

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

不过,我确实认为非 CDATA 版本通常更清晰。是的,& 符号被转义了 - <也会转义 - 但这仍然比CDATA开始/结束部分的绒毛要少得多。

不要忘记,对于人类来说,看到XML表示本身应该是非常罕见的 - 这个想法是,它是信息的传输,当你需要时,在该表示中是合理的可读性的。我不会太纠结于此。

两者本质上是相同的,没有具体的"最佳实践"。

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

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

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

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

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