当前位置: 代码迷 >> J2SE >> dom4j XML 解析解决方案
  详细解决方案

dom4j XML 解析解决方案

热度:175   发布时间:2016-04-23 19:42:04.0
dom4j XML 解析
Java新手,学习用dom4j解析XML,有个XML有三层目录,如下:<Group></Group>
<?xml version="1.0" encoding="UTF-8"?>
<Contacts>
<Contact id="A1">
<Name>擎天柱</Name>
<Age>50</Age>
<Phone>13765421076</Phone>
<Group>
<id>1</id>
<Name>博派</Name>
</Group>
</Contact>
<Contact id="A2">
<Name>威震天</Name>
<Age>54</Age>
<Phone>13801298700</Phone>
<Group>
<id>2</id>
<Name>狂派</Name>
</Group>
</Contact>
</Contacts>


写了个dom4j的解析,输出到Group这里就不显示了,试了好久也没法转入到<Group></Group>里面去,怎么办啊?

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;

public class Test {
public void readXML(String fileName) throws Exception {
InputStream in = new FileInputStream(fileName);
SAXReader saxReader = new SAXReader(); 
Document document = saxReader.read(in); 
Element root = document.getRootElement(); 

List<Element> childElements = root.elements(); 
for (Element firstLevel : childElements) { 
List<Element> childs = firstLevel.elements(); 
for(Element secondLevel : childs){
System.out.println(secondLevel.getName()+"-->"+secondLevel.getText());
}
}
}

public static void main(String[] args) throws Exception {
Test dom4jTest = new Test();
dom4jTest.readXML("./XML_Files/AdressList.xml");
}
}


输出:
Name-->擎天柱
Age-->50
Phone-->13765421076
Group-->
Name-->威震天
Age-->54
Phone-->13801298700
Group-->

Group后面是空的!
------解决思路----------------------
...大哥 当然是空的了 你只是解析到第二层啊
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class Test
{
public void readXML(String fileName) throws Exception {
        InputStream in = new FileInputStream(fileName);
        SAXReader saxReader = new SAXReader(); 
        Document document = saxReader.read(in); 
        Element root = document.getRootElement(); 
 
        List<Element> childElements = root.elements(); 
        for (Element firstLevel : childElements) { 
            List<Element> childs = firstLevel.elements(); 
            for(Element secondLevel : childs){
                System.out.println(secondLevel.getName()+"-->"+secondLevel.getText());
                
                List<Element> threeChilds = secondLevel.elements();
                for(Element threeLevel : threeChilds)
                 System.out.println(threeLevel.getName()+"-->"+threeLevel.getText());
            }
        }
    }
 
    public static void main(String[] args) throws Exception {
     Test dom4jTest = new Test();
        dom4jTest.readXML("./XML_Files/AdressList.xml");
    }
}



输出:
Name-->擎天柱
Age-->50
Phone-->13765421076
Group-->
            
            
        
id-->1
Name-->博派
Name-->威震天
Age-->54
Phone-->13801298700
Group-->
            
            
        
id-->2
Name-->狂派
  相关解决方案