欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

使用DOM解析xml文件

程序员文章站 2022-07-10 20:50:33
使用DOM解析xml文件 要解析的xml文件如下: 解析xml的代码如下: 基本步骤差不多就是: 首先是先获得根元素 然后getElementByTagName()获得相应标签的node集合 通过集合,如list中的item()获得集合中的具体元素 最后根据getTextContent()获得具体元 ......

使用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()获得集合中的具体元素

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

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