为什么在 XML 元素名称中包含“(”或“)”字符无效?
Why is it invalid to have "(" or ")" characters in an XML Element Name?
我目前在使用在运行时生成 XML 然后尝试在别处解析它的应用程序时遇到一些问题。
在某些情况下,我收到消息 "error parsing attribute name",这是失败的 XML 示例:
<datastore>
<row id="Timer?ID=0">
<ID>0</ID>
<START_TIME_(sec)>120</START_TIME_(sec)>
</row>
</datastore>
解析器似乎在尝试读取 ( 字符时失败,其他字符如 ) 和 ?.
我认为 XML 中唯一无效的字符是此答案中指定的字符:
知道为什么这会失败吗?
这些是要在元素文本中编码的字符,但是 xml 元素名称有一个命名约定。
XML 元素必须遵循以下命名规则:
- 元素名称区分大小写
- 元素名称必须以 a 开头
字母或下划线
- 元素名称不能以字母 xml 开头
(或 XML,或 Xml,等等)
- 元素名称可以包含字母、数字、
连字符、下划线和句点
元素名称不能包含空格
可以使用任何名称,不保留任何单词(xml除外)。
(来源:http://www.w3schools.com/xml/xml_elements.asp)
这意味着您的括号在元素名称中无效
您找到的答案列出了 XML 文档文本中保留的字符,即元素的内容和属性的值。但是,您的示例在元素名称中使用了标点符号,这受到更严格的限制。
完整的允许字符列表可以是 found in the XML specification; note that the first character of the name is even further restricted. (XML 1.1 expands the list of allowed characters slightly 以反映 Unicode 标准的演变。)需要注意的主要事情是来自 ASCII 的大多数常见标点符号(其 Unicode 代码点低于 # x7f) 被排除在外。
通常的做法是只使用以字母开头的名称,然后是字母、数字、下划线和连字符,但是编写良好的 XML 解析器应该处理更广泛的 Unicode 字符应该您希望使用它们。
以"xml"开头的名称(大小写的任意组合)是特别保留的,包含冒号的名称将被解释为使用名称空间,因此也应避免使用这些名称。
请注意,这些受限字符没有转义机制,您只需将格式设计为不需要它们即可。
我目前在使用在运行时生成 XML 然后尝试在别处解析它的应用程序时遇到一些问题。
在某些情况下,我收到消息 "error parsing attribute name",这是失败的 XML 示例:
<datastore>
<row id="Timer?ID=0">
<ID>0</ID>
<START_TIME_(sec)>120</START_TIME_(sec)>
</row>
</datastore>
解析器似乎在尝试读取 ( 字符时失败,其他字符如 ) 和 ?.
我认为 XML 中唯一无效的字符是此答案中指定的字符:
知道为什么这会失败吗?
这些是要在元素文本中编码的字符,但是 xml 元素名称有一个命名约定。
XML 元素必须遵循以下命名规则:
- 元素名称区分大小写
- 元素名称必须以 a 开头 字母或下划线
- 元素名称不能以字母 xml 开头 (或 XML,或 Xml,等等)
- 元素名称可以包含字母、数字、 连字符、下划线和句点
元素名称不能包含空格
可以使用任何名称,不保留任何单词(xml除外)。
(来源:http://www.w3schools.com/xml/xml_elements.asp)
这意味着您的括号在元素名称中无效
您找到的答案列出了 XML 文档文本中保留的字符,即元素的内容和属性的值。但是,您的示例在元素名称中使用了标点符号,这受到更严格的限制。
完整的允许字符列表可以是 found in the XML specification; note that the first character of the name is even further restricted. (XML 1.1 expands the list of allowed characters slightly 以反映 Unicode 标准的演变。)需要注意的主要事情是来自 ASCII 的大多数常见标点符号(其 Unicode 代码点低于 # x7f) 被排除在外。
通常的做法是只使用以字母开头的名称,然后是字母、数字、下划线和连字符,但是编写良好的 XML 解析器应该处理更广泛的 Unicode 字符应该您希望使用它们。
以"xml"开头的名称(大小写的任意组合)是特别保留的,包含冒号的名称将被解释为使用名称空间,因此也应避免使用这些名称。
请注意,这些受限字符没有转义机制,您只需将格式设计为不需要它们即可。