我目前在运行时生成XML的应用程序遇到一些问题,然后尝试在其他地方解析它。
在某些情况下,我收到消息“解析属性名称错误”,这是一个失败的XML示例:
<datastore>
<row id="Timer?ID=0">
<ID>0</ID>
<START_TIME_(sec)>120</START_TIME_(sec)>
</row>
</datastore>
一旦尝试阅读(字符,其他字符如)和?,解析器似乎就会失败。< / p>
我认为XML中唯一的无效字符与此答案中指定的字符相同:https://stackoverflow.com/a/1091953
知道为什么会失败吗?
答案 0 :(得分:3)
您找到的答案列出了XML文档文本中保留的字符,即元素的内容和属性的值。但是,您的示例在元素名称中使用标点符号,这受到更严格的限制。
允许字符的完整列表可以是found in the XML specification;请注意,名称的第一个字符甚至被进一步限制。 (XML 1.1 expands the list of allowed characters slightly反映了Unicode标准的演变。)需要注意的主要事项是,大多数常见的ASCII标点符号(其中包含#x7f以下的Unicode代码点)都被排除在外。
通常的做法是只使用以字母开头的名称,并继续使用字母,数字,下划线和连字符,但如果您希望使用它们,则编写良好的XML解析器应处理更广泛的Unicode字符。
以“xml”开头的名称(大写和小写的任意组合)是特别保留的,包含冒号的名称将被解释为使用名称空间,因此也应避免这些名称。
请注意,这些受限制的字符没有转义机制,您只需将您的格式设计为不需要它们。
答案 1 :(得分:0)
这些是要在元素文本中编码的字符,但是有一个xml元素名称的命名约定。
XML元素必须遵循以下命名规则:
元素名称不能包含空格
可以使用任何名称,不保留任何单词(xml除外)。
(来源:http://www.w3schools.com/xml/xml_elements.asp)
这意味着您的括号在元素名称中无效