我想用Java遍历一个简单的XML文档,但由于某种原因,空白被算作节点。例如,我有这样的:使用Java遍历xml文件的问题
factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
DOMImplementation domImpl = builder.getDOMImplementation();
factory.setIgnoringComments(true);
factory.setIgnoringElementContentWhitespace(true);
DOMImplementationLS ls = (DOMImplementationLS) domImpl.getFeature("LS", "3.0");
LSInput in = ls.createLSInput();
in.setByteStream(is);
LSParser parser = ls.createLSParser(DOMImplementationLS.MODE_SYNCHRONOUS, "http://www.w3.org/2001/XMLSchema");
document = parser.parse(in);
document.getDocumentElement().getFirstChild()
所以以下XML,返回的第一个孩子是空白的某种组合。
<?xml version="1.0"?>
<opendap>
<root url="http://localhost/" filter=".*" />
<rewrite>
<var name="altitude" type="enum" resAttr="getNodeName" profattr="profattr"/>
</rewrite>
<constants>
<catalogURL>http://google.com</catalogURL>
</constants>
<resAttr>
<Publishers>person1</Publishers>
<Publishers>person2</Publishers>
</resAttr>
</opendap>
我该如何解决这个问题?
编辑:我有点修正它通过这样做(resattr是Element代表)。不幸的是,setValidating不起作用。
for (Node child = this.resAttr.getFirstChild(); child != null; child = child.getNextSibling()){
if (child.getFirstChild() != null && child.getFirstChild().getNodeValue() != null){
String nodename = child.getNodeName();
String nodevalue = child.getFirstChild().getNodeValue();
什么Java和JAX-的版本P你在用吗?该方法存在一个错误http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6545684 – 2010-11-02 22:15:16
//从DocumentBuilder.java编译(版本1.5:49.0,超级位) public abstract class javax.xml .parsers.DocumentBuilder。也使用java 1.6 – victor 2010-11-02 22:47:41