DOM解析在java和javascript不同的写法

总结在java中及javascript中使用DOM解析xml文件的不同点

1.   生成DOM文档对象的方法不同

a)     在javascript中,创建DOM文档对象代码如下:

//创建xml文档

varxmlDoc = new ActiveXObject("Microsoft.xmldom");

//设置不支持异步

xmlDoc.async= false;

//加载xml文件

xmlDoc.load("demo03.xml");

b)     在java中,创建DOM文档对象代码如下:

//创建一个解析器工程对象

PublicDocument document;

DocumentBuilderFactory  factory =DocumentBuilderFactory.newInstance();

//创建一个解析器对象

DocumentBuilderbuilder = factory.newDocumentBuilder();

//创建一个xml文件在内存的树形节点模型

document=builder.parse(DomReaderXML.class.getClassLoader().getResourceAsStream("xml文件"));

2.获取根节点及属性名以及属性值的方法

c)     在javascript中获取:

varroot = xmlDoc.documentElement//获取根节点

varnode=xmlDoc.documentElement.childNodes[0];//根节点下面的节点

document.write("<br/>==="+node.baseName);//baseName,用于输出节点标签

//节点类型,其中1代表元素节点,2代表属性节点,3代表文本节点

document.write("<br/>节点类型:"+node.nodeType+"<br/>");

document.write("根元素节点名称:"+node.ownerDocument.documentElement.tagName+"<br/>");      

document.write("当前节点的属性名:"+node.attributes[0].name+"<br/>");

document.write("当前节点的属性值:"+node.attributes[0].value);

document.write("<br/>当前节点及其子节点所包含的文本"+node.text);

 

 

d)  在java中获取:

将xml文档中的数据转换成集合对象

//获取所有student节点集合

NodeListnodes = document.getElementsByTagName("student");

List<Student>stuList = new ArrayList<Student>();

         //采用for循环输出节点的标签名和属性

         for(int i=0;i<nodes.getLength();i++){

             Student stu = new Student();

             //转换成element元素对象

             Element element = (Element)nodes.item(i);

             //System.out.println(element.getNodeName());

             //属性值

             String id = element.getAttribute("id");

             stu.setId(id);

             NodeList childs =element.getChildNodes();

             String name =document.getElementsByTagName("name").item(i).getFirstChild().getNodeValue();

             stu.setName(name);

             String  strAge =document.getElementsByTagName("age").item(i).getFirstChild().getNodeValue();

             stu.setAge(Integer.parseInt(strAge));

             String sex = document.getElementsByTagName("sex").item(i).getFirstChild().getNodeValue();

             stu.setSex(sex);

             stuList.add(stu);

         }

//加载完成之后,采用xml文件的方式进行查找结点

    NodeList nodelist = document.getElementsByTagName("student");

    for(int i =0; i<nodelist.getLength();i++){

     Elementstuelement = (Element) nodelist.item(i);

             //获取属性的值

             String idValue =stuelement.getAttribute("id");

             //System.out.println("id属性值"+idValue);

             NodeList child =stuelement.getChildNodes();

             for(int j=0;j<child.getLength();j++){

                  if(child.item(j).getNodeType()==Node.ELEMENT_NODE){

                      //System.out.println(Node.ELEMENT_NODE);

                      System.out.println(child.item(j).getNodeType());

                      Node node = child.item(j);                 System.out.println(node.getNodeName()+"=="+node.getTextContent());

                  }

             }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值