使用DOM解析xml文件

Posted xtu熊大

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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()获得集合中的具体元素

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

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

 

以上是关于使用DOM解析xml文件的主要内容,如果未能解决你的问题,请参考以下文章

DOM解析xml文件

java解析xml的几种方式哪种最好?

使用dom4j创建和解析xml文件

java代码用dom4j解析xml文件的简单操作

Java web——xml文件读取的解析方式(DOM和SAX)

解析XML