在 XML 中存储文件名的正确方法是什么
本文关键字:方法 是什么 文件名 XML 存储 存储文件 | 更新日期: 2023-09-27 18:37:09
我正在使用XDocument
来缓存文件列表。
<file id="20" size="244318208">a file with an &ersand.txt</file>
在此示例中,我使用了 XText
,并让它自动转义文件名中的字符,例如 & with &
<file id="20" size="244318208"><![CDATA[a file with an &ersand.txt]]></file>
在这个版本中,我使用 XCData
让我使用文本字符串而不是转义字符串,因此它出现在 XML 中就像在我的应用程序中一样。
我想知道在任何特定条件下,它们中的任何一个是否比另一个更好,或者这只是个人品味。此外,如果这意味着什么,文件名可能包含也可能不包含非法字符。
我不会显式使用XText
或XCData
- 我只提供一个字符串,让LINQ to XML做任何它想做的事情。
不过,我确实认为非 CDATA 版本通常更清晰。是的,& 符号被转义了 - <
也会转义 - 但这仍然比CDATA
开始/结束部分的绒毛要少得多。
不要忘记,对于人类来说,看到XML表示本身应该是非常罕见的 - 这个想法是,它是信息的传输,当你需要时,在该表示中是合理的可读性的。我不会太纠结于此。
两者本质上是相同的,没有具体的"最佳实践"。
就个人而言,我为需要大量转义的大量文本(例如代码或HTML标记)保留<![CDATA[]]>
。
在这种特定情况下,我宁愿像您的第一个例子一样逃避&
&
。
大多数文件名不会包含与号,或者少于符号。所以选择XText。保留 XCData 以备需要大量此类字符的情况使用,例如在 XML 文档中嵌入和 HTML 片段时。
理由:序列化和分析文本的 CPU 利用率差异完全可以忽略不计。但是在存储、带宽或内存需求方面存在(小)差异。在其他条件相同的情况下,请使用使用最少空间的格式(即使差异很小)。
关系。
它们都是有效的 XML,并且具有相同的含义。