Java DOM解析器错误
这是我的xml文件:Java DOM解析器错误,java,xml,parsing,dom,dtd,Java,Xml,Parsing,Dom,Dtd,这是我的xml文件: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Server SYSTEM "Server.dtd"> <Server> <MaximumUserNumber>2</MaximumUserNumber> <ServerPortNumber>1234</ServerPortNumber> <MessagesQueu
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Server SYSTEM "Server.dtd">
<Server>
<MaximumUserNumber>2</MaximumUserNumber>
<ServerPortNumber>1234</ServerPortNumber>
<MessagesQueueSize>5</MessagesQueueSize>
</Server>
我做错了什么?谢谢 您的代码看起来不错
它甚至没有在jdk-7上抛出任何异常。也许,您没有包含这样做的代码
您只是没有在查找元素值时再执行一步:
NodeList nodeList = document.getElementsByTagName("MaximumUserNumber");
Node foundNode = nodeList.item(0);
Node textNode = foundNode.getChildNodes().item(0);
String value = textNode.getNodeValue();
System.out.println(value);
输出
2
解释
document.getElementsByTagName(“MaximumUserNumber”)
返回节点列表。它有一个找到的节点。每个元素节点(type==元素_节点),即使它只包含文本,也有子元素。在这种情况下,唯一的子节点是TEXT\u node类型的节点:node textNode=foundNode.getChildNodes().item(0)代码>。从该类型的节点中,您只需获取其值
有一种更快的方法可以从纯文本元素获取文本值:
NodeList nodeList = document.getElementsByTagName("MaximumUserNumber");
Node foundNode = nodeList.item(0);
String value = foundNode.getTextContent();
System.out.println(value);
此处,.getTextContent()
返回此节点及其子节点的文本内容
这两种情况都不是真正安全的(无空检查或节点类型检查),但如果与schema一起使用,则可能会被认为是安全的。我用Java 6尝试了您的代码。它毫无例外地发挥了作用。您使用哪个Java版本?您应该仔细检查代码实际处理的config.xml
是否为预期版本。您真的确定您的文档是根据您认为的DTD版本进行验证的吗?无论如何,在调用nl.item(0)
之前,您应该检查节点列表的长度。显然,在你的情况下,长度是0。如果您仅使用这些代码片段创建独立的测试项目,那么长度是否仍然为0?
2
NodeList nodeList = document.getElementsByTagName("MaximumUserNumber");
Node foundNode = nodeList.item(0);
String value = foundNode.getTextContent();
System.out.println(value);