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

nob*_*ody 5 c# xml formatting linq-to-xml

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

<file id="20" size="244318208">a file with an &amp;ersand.txt</file>
Run Code Online (Sandbox Code Playgroud)

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

<file id="20" size="244318208"><![CDATA[a file with an &ersand.txt]]></file>
Run Code Online (Sandbox Code Playgroud)

在这一个中,我曾经XCData让我使用文字字符串而不是转义字符串,所以它在我的应用程序中出现在XML中.

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

Jon*_*eet 5

我不会明确地使用XText或者XCData- 我只是提供一个字符串,让LINQ to XML做任何想做的事情.

我认为非CDATA版本通常更清晰.是的,amperands被逃脱 - 并且<也将 - 但是仍然比CDATA开始/结束部分少得多.

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


Ode*_*ded 3

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

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

在这种特定情况下,我宁愿像第一个示例中那样转义&to 。&amp;