首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java DOM XML解析的不同结果

java DOM XML解析的不同结果
EN

Stack Overflow用户
提问于 2015-11-27 09:46:40
回答 1查看 111关注 0票数 0

我使用DOM解析器来解析XML文件。我使用格式化的xml文件和未格式化的xml文件作为输入。

格式

代码语言:javascript
复制
<students>
    <student>
        <name>Vicky</name>
    </student>
    <student>
        <name>John</name>
    </student>
</students>

未格式化的

代码语言:javascript
复制
<students><student><name>Vicky</name></student><student><name>John</name></student></students>

当运行下面的代码以获得子元素时,我得到了不同的结果。

代码语言:javascript
复制
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有不同的结果?

EN

回答 1

Stack Overflow用户

发布于 2015-11-27 09:59:27

创建格式设置的空白由text()节点组成。它们在未格式化的XML中丢失。

在未格式化的文档中,有一个根的student子节点。在格式化的节点中,还有3个text()节点:在学生之前、之间和之后。

xsh中验证

代码语言:javascript
复制
open file.xml ;
for /students/node() echo name() xsh:if(self::text(), 'text', '') ;

 text
student
 text
student
 text
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33954539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档