所以我有以下代码,我几乎从
here复制.但问题是我的文本节点不包含任何文本,他们只有属性.所以我喜欢
<Random name="Katie" num="5"></Random>
我正在使用此代码来解析它:
private void listNodes(Node node,String indent) { String nodeName = node.getNodeName(); System.out.println(indent + " Node is: " + nodeName); if(node instanceof Element && node.hasAttributes()) { System.out.println(indent + "Attributes are: "); NamedNodeMap attrs = node.getAttributes(); for (int i = 0; i < attrs.getLength(); i++) { Attr attribute = (Attr) attrs.item(i); System.out.println(indent + attribute.getName() + "=" + attribute.getValue()); } } NodeList list = node.getChildNodes(); if (list.getLength() > 0) { for (int i = 0; i < list.getLength(); i++) { listNodes(list.item(i),indent + " "); } } }
出于某种原因,我的空文本节点都说
Node is: #text
有谁知道在解析xml文件时如何跳过空节点文本?
谢谢,
玩笑
解决方法
使用DTD验证,您可以让解析器自动抑制元素之间的空白.但是,要修改特定实现,可以测试Text节点,如果它们为空则忽略它们.
private void listNodes(Node node,String indent) { if (node instanceof Text) { String value = node.getNodeValue().trim(); if (value.equals("") ) { return; } } String nodeName = node.getNodeName(); System.out.println(indent + " Node is: " + nodeName); ...