XML属性中哪些字符无效(除非编码)?

时间:2009-05-15 02:00:20

标签: xml xml-serialization

我无法相信我无法轻易找到这些信息,所以:

1)如果没有对实体进行编码,哪些字符不能合并到XML属性中?

显然,您需要编码引号。那么<>怎么样?还有什么?

2)官方名单到底在哪里?

3 个答案:

答案 0 :(得分:50)

以下是what is allowed in an attribute value的定义。

'"' ([^<&"] | Reference)* '"'  |  "'" ([^<&'] | Reference)* "'" 

所以,你不能拥有:

  • 打开/关闭属性值的相同字符( '"
  • 裸露的&符号(&必须为&amp;
  • 左尖括号(<必须为&lt;

您也不应该使用任何在XML文档中任何地方完全不合法的characters(例如换页等)。

答案 1 :(得分:5)

根据(2)current recommendation,特别是关于character data and Markup,它们是(1)&符号(&amp;),左尖括号(&lt;),右尖括号(&gt;)以及单引号(')和双引号(“)。

答案 2 :(得分:1)

请参阅2.2 Characters中的"Extensible Markup Language (XML) 1.0 (Third Edition)"

请注意,至少在.NET中,如果您使用XML API来处理XML,那么您不必担心这一点。这就是不将XML视为文本的原因。