java - 如何停止 getNodeName() 并同时打印节点类型

标签 java xml netbeans

我很难过,希望我只是做了一件我可以轻松修复的蠢事。

我正在传递一个充满 XML 的字符串,即“XMLstring”。我想获取其中一个元素并在控制台上以“name = value”打印子节点。问题是控制台不断打印垃圾以及我不知道如何摆脱的元素名称。

无论如何,这段代码:

try {
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        InputSource is = new InputSource();
        is.setCharacterStream(new StringReader(XMLstring));
        Document doc = db.parse(is);

        NodeList nodes = doc.getElementsByTagName("client-details");
        Node node = nodes.item(0);

        NodeList client_details = node.getChildNodes();

        for (int i = 0; i < client_details.getLength(); i++) {
            System.out.println(client_details.item(i).getNodeName()+" = "+getTextContents(client_details.item(i)));
        }
    }
    catch (Exception e) {
        e.printStackTrace();
    }

给我以下内容:

#text = 
testing-mode = false
#text = 
name = testman
#text = 
age = 30

为什么要打印“#text =”?我该如何摆脱它?

如果有帮助,我正在使用 NetBeans。

最佳答案

您想改用 getNodeValue() :

System.out.println(client_details.item(i).getNodeValue()+" = "+getTextContents(client_details.item(i)));

如果你看in the table at the top of this page ,您会看到对于文本节点,getNodeName() 返回#text。

关于java - 如何停止 getNodeName() 并同时打印节点类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6217559/

相关文章:

java - 创建 .jar 文件时的数据库附件

java - libgdx中的圆矩形碰撞边检测

java数组: split elements

c# - 如何使用正则表达式清理 XML 属性?

c - 如何从 XML 文件中读取多个值并将它们与一个值进行有效比较的示例

java - 类类型变量或在构造函数/方法中实例化之间有什么区别

java - 改造具有空字段的获取对象

java - 具有动态参数的 Spring-Boot @Bean 生产者

java - 使用 JAX-B 添加 XML 属性 XmlElementWrapper

java - 如何将相同的监听器添加到 NetBeans GUI Builder 中的多个组件