【问题标题】:What is the proper way to store a file name in XML?在 XML 中存储文件名的正确方法是什么?
【发布时间】:2012-06-16 21:20:21
【问题描述】:

我正在使用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 中的显示与在我的应用程序中一样。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      我不会明确地使用XTextXCData - 我只是提供一个字符串,让LINQ to XML 为所欲为。

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

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

          就我个人而言,我将 &lt;![CDATA[]]&gt; 保留用于需要大量转义的大量文本(例如代码或 HTML 标记)。

          在这种特定情况下,我宁愿将&amp;amp; 转义为&amp;amp;,就像您的第一个示例一样。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-03-30
            • 2020-01-25
            • 2011-10-12
            • 2011-05-29
            • 2012-05-01
            • 1970-01-01
            • 2019-01-11
            • 2020-12-02
            相关资源
            最近更新 更多