我设法在我的程序中根除了这个错误的原因:
INVALID_CHARACTER_ERR:指定了无效或非法的XML字符。
我做了一个测试应用程序,以确保原因是正确的。
测试代码:
String x = "2TEST"; // <--------- when there is no leading number
// app executes normally
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try {
builder = factory.newDocumentBuilder();
Document doc = builder.newDocument();
doc.createElement(x);
} catch (ParserConfigurationException e) {
e.printStackTrace();
当我删除2TEST中的前导号码时,它工作正常,某些条目中需要前导号码并且无法消除,在这种情况下是否有任何解决方法?
答案 0 :(得分:1)
XML标记名称不能以数字开头。来自spec:
The first character of a Name must be a NameStartChar
NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] |
[#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] |
[#x37F-#x1FFF] | [#x200C-#x200D] | [#x2070-#x218F] |
[#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] |
[#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
因此,在将其用作标记名称中的第一个字符之前,需要以某种方式手动转义字符。例如,如果没有以它开头的普通标记,则可以使用下划线字符。