zoukankan      html  css  js  c++  java
  • 使用DOM解析xml文件

    使用DOM解析xml文件

    要解析的xml文件如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <Languages cat="it">
      <lan id="1">
        <name>java</name>
        <ide>Eclipse</ide>
      </lan>
      <lan id="2">
        <name>Swift</name>
        <ide>Xcode</ide>
      </lan>
      <lan id="3">
        <name>C#</name>
        <ide>Visual Studio</ide>
      </lan>
    </Languages>

    解析xml的代码如下:

    public class Dealxml {
    
      public static void main(String[] args) {
        DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
        try {
          DocumentBuilder builder=factory.newDocumentBuilder();
          Document document=builder.parse(new File("language.xml"));
          
          //获取xml的根元素
          Element root=document.getDocumentElement();
          System.out.println("cat="+root.getAttribute("cat"));
          NodeList nlist=root.getElementsByTagName("lan");
          for(int i=0;i<nlist.getLength();i++){
            System.out.println("-----------------");
            Element lan=(Element) nlist.item(i);
            System.out.println("id="+lan.getAttribute("id"));
            
            NodeList clist=lan.getChildNodes();
            for(int j=0;j<clist.getLength();j++){
              Node c= clist.item(j);
              if(c instanceof Element){
                System.out.println(c.getNodeName()+"="+c.getTextContent());
              }
            }
          }
          
          
        } catch (ParserConfigurationException e) {
          e.printStackTrace();
        } catch (SAXException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
        }
    
      }
    
    }

    基本步骤差不多就是:

    首先是先获得根元素

    然后getElementByTagName()获得相应标签的node集合

    通过集合,如list中的item()获得集合中的具体元素

    当然,也可以通过getChildNodes()直接获得好标签下的所有子节点

    最后根据getTextContent()获得具体元素的文本内容

    备注:在最后加上判断是否为Element对象的操作,是因为xml文件中的缩进空格这些会被视为一个空节点输出,所以要加上一个判断

     

  • 相关阅读:
    为什么项目经理非常难有节操的选举
    二叉查找树的删除操作
    二叉查找树的前驱后继
    替罪羊树
    树链剖分
    DFS序
    bzoj3224: Tyvj 1728 普通平衡树(平衡树)
    splay树入门(带3个例题)
    红黑树
    AVL树
  • 原文地址:https://www.cnblogs.com/xtuxiongda/p/9054063.html
Copyright © 2011-2022 走看看