我使用DOM解析器来解析XML文件。我使用格式化的xml文件和未格式化的xml文件作为输入。
格式
<students>
<student>
<name>Vicky</name>
</student>
<student>
<name>John</name>
</student>
</students>未格式化的
<students><student><name>Vicky</name></student><student><name>John</name></student></students>当运行下面的代码以获得子元素时,我得到了不同的结果。
public class XmlTest {
public static void main(String[] args) {
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
dbFactory.setNamespaceAware(true);
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new FileInputStream("testFile.xml")));
doc.getDocumentElement().normalize();
Element mainEle = doc.getDocumentElement();
NodeList nodes = mainEle.getChildNodes();
System.out.println("No.of Childs = " + nodes.getLength());
} catch (ParserConfigurationException | SAXException | IOException e) {
System.out.println("Error " + e);
}
}
}结果是;
用于格式化的XML:5
用于未格式化的:2
为什么对于具有相同内容的xml有不同的结果?
发布于 2015-11-27 09:59:27
创建格式设置的空白由text()节点组成。它们在未格式化的XML中丢失。
在未格式化的文档中,有一个根的student子节点。在格式化的节点中,还有3个text()节点:在学生之前、之间和之后。
在xsh中验证
open file.xml ;
for /students/node() echo name() xsh:if(self::text(), 'text', '') ;
text
student
text
student
texthttps://stackoverflow.com/questions/33954539
复制相似问题