gpt4 book ai didi

java - java DOM 解析器异常

转载 作者:行者123 更新时间:2023-12-01 13:29:57 26 4
gpt4 key购买 nike

我正在使用 dom pasrer 创建 xml 文档,其中标签名称以数字开头。它正在给予异常(exception)。似乎使用java DOM解析器,不允许有以数字开头的标记名。

同样的事情,可以使用 System.Xml 在 C#(dot-net) 中实现;

有什么办法可以达到同样的效果吗?

下面是更多的程序和输出:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;

public class WriteXMLFile {

public static void main(String argv[]) {

try {

DocumentBuilderFactory docFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

// root elements
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("company");
doc.appendChild(rootElement);

Element firstname = doc.createElement("1name");
firstname.appendChild(doc.createTextNode("yong"));
rootElement.appendChild(firstname);

} catch (ParserConfigurationException pce) {
pce.printStackTrace();
}
}
}

异常:

Exception in thread "main" org.w3c.dom.DOMException: INVALID_CHARACTER_ERR: An invalid or illegal XML character is specified. 
at com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl.createElement(CoreDocumentImpl.java:618)
at com.impetus.avatar.WriteXMLFile.main(WriteXMLFile.java:25)

最佳答案

Java DOM 解析器拒绝这些标签是正确的。

XML 标记名称不应以数字开头,但可以包含数字。这在 Extensible Markup Language (XML) 1.1 (Second Edition) 中指定。文档如下:

[4]     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]

[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] |
#xB7 | [#x0300-#x036F] | [#x203F-#x2040]

[5] Name ::= NameStartChar (NameChar)*

关于java - java DOM 解析器异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21627038/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com