我设法在程序中根除此错误的原因:

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]


因此,在将其用作标签名称的第一个字符之前,您需要以某种方式手动转义该字符。例如,如果您没有下划线字符,则可以使用下划线字符。

10-08 09:21