普通网友 2014-08-14 08:03 采纳率: 0%
浏览 912

Node节点问题,小白求解答

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.*;
import org.w3c.dom.*;

public class Test {

/**
 * 读取XML文件数据
 * @param args
 */
public static void main(String[] args) {
    try{
        //1.创建解析工厂对象
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        dbf.isValidating();
        //2.创建解析
        DocumentBuilder db=dbf.newDocumentBuilder();

        Document  doc=db.parse("Pet.xml");

        NodeList doglist=doc.getElementsByTagName("dog");//将3个dog的节点全部保存到NodeList
        System.out.println(doglist.getLength());

        System.out.println("姓名\t亲密度\t健康值\t类型");
        for (int i = 0; i < doglist.getLength(); i++) {
            //获取第i个狗的元素
            Node dog=doglist.item(i);
            //获取第i个狗的信息
            for(Node node=dog.getFirstChild();node!=null;node=node.getNextSibling())
            {
                System.out.println(node.getNodeName()+","+node.getNodeType());
                if(node.getNodeType()==Node.ELEMENT_NODE)
                {
                    String value=node.getFirstChild().getNodeValue();
                    System.out.print(value+"\t");
                }

            }
            System.out.println();
        }



    }
    catch(Exception ex)
    {
        System.out.println("创建失败!");
    }
}

}




美美
90
80
拉不拉多


多多
90
80
雪纳瑞


烧烧
90
60
哈士奇




奇奇
90
60
Q女

为什么输出的node.getNodeName()和node.getNodeType()
有#text 1 这样的

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-02 11:35
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在你的代码中,node.getNodeName()node.getNodeType() 是用于获取DOM(文档对象模型)中的节点名称和类型的方法。这些方法可以帮助你了解一个特定的节点是什么类型的(例如文本节点、实体引用节点等),以及它是否包含任何内容。

    在你提供的代码中:

    • node.getNodeName() 返回节点的名称。
    • node.getNodeType() 返回节点的类型,这通常与node.getNodeName()返回的结果相同。但是,在某些情况下,node.getNodeType()可能返回不同的结果,因为它们可能代表不同的节点类型。

    例如:

    // 假设有一个名为 "myElement" 的节点,其名称为 "name",类型为 "ELEMENT_NODE"
    System.out.println("节点名称: " + node.getNodeName()); // 输出:节点名称: name
    System.out.println("节点类型: " + node.getNodeType()); // 输出:节点类型: ELEMENT_NODE
    

    所以,当使用 node.getNodeName() 获取节点名称时,你需要知道这个节点是何种类型的,因为它可以提供有关它的信息。同样,当你使用 node.getNodeType() 获取节点类型时,也需要考虑它是否包含任何内容,因为一些节点类型可能会有不同的行为,特别是那些没有内容的节点类型。

    评论

报告相同问题?