我设法在程序中根除此错误的原因:
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中删除开头编号时,它工作正常,在某些条目中需要开头编号并且无法删除开头编号,在这种情况下是否有解决方法?
最佳答案
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]
因此,在将其用作标签名称的第一个字符之前,您需要以某种方式手动转义该字符。例如,如果您没有下划线字符,则可以使用下划线字符。