使用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文件中的缩进空格这些会被视为一个空节点输出,所以要加上一个判断

猜你喜欢

转载自www.cnblogs.com/xtuxiongda/p/9054063.html