package petma.dao;import java.net.MalformedURLException;
import java.net.URL;
import java.util.*;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
public class XmlDao { /**
 * @param args
 * @throws MalformedURLException 
 */
public static void main(String[] args){
// TODO Auto-generated method stub XmlDao xd=new XmlDao();

String url="D:\\myxml.xml";
for(int i=0;i<3;i++){
System.out.print(
((Node)((xd.getElementByURL(url)).get(i))).getName());
System.out.print(
((Node)((xd.getElementByURL(url)).get(i))).getStringValue());
}

} public List getElementByURL(String url)
{
List list=new ArrayList();
SAXReader reader = new SAXReader();
    Document document=null;
try {
document = reader.read(url);
} catch (DocumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    Element element=document.getRootElement();
   Iterator iterator=element.elementIterator();
   while(iterator.hasNext())
   {
   Node ele= (Element) iterator.next();
   list.add(ele);
   }
return list;
}



}<?xml version="1.0" encoding="gb2312" ?> 
- <showlist>
- <menu>
  <first>a</first> 
- <second>
  <item>b</item> 
  <item>c</item> 
  </second>
  </menu>
- <menu>
  <first>d</first> 
- <second>
  <item>e</item> 
  <item>f</item> 
  </second>
  </menu>
- <menu>
  <first>g</first> 
- <second>
  <item>h</item> 
  <item>i</item> 
  </second>
  </menu>
  </showlist>问题:为啥子都是menu呢,我想node.getname 返回 first item

解决方案 »

  1.   


    //读取xml文件import org.w3c.dom.*;
    import javax.xml.parsers.*;
    import java.util.*;
    import java.io.*;
    public class ReadXml{
        
        public static void main(String[] args){
            
            try{
                DocumentBuilder db=DocumentBuilderFactory.newInstance().newDocumentBuilder();
            
                Document doc=db.parse(new File("e:/workspace/test/test.xml"));
                Element rootElement = doc.getDocumentElement();
                NodeList list = rootElement.getElementsByTagName("name");
                Element element = (Element) list.item(0);
                System.out.println(element.getChildNodes().item(0).getNodeValue());
                element = (Element) list.item(1);
                System.out.println(element.getChildNodes().item(0).getNodeValue());
                
            }catch(Exception e){
                System.out.println(e.getMessage());
            }
            
        }    
    }<?xml version="1.0" encoding="utf-8"?>
    <content>
        <person>
            <name>Jack</name>
            <sex>male</sex>
            <age>30</age>    
        </person>
        <person>
            <name>Rose</name>
            <sex>female</sex>
            <age>26</age>    
        </person>
    </content>
      

  2.   


    package petma.dao;import java.net.MalformedURLException;
    import java.util.ArrayList;
    import java.util.List;import org.dom4j.Document;
    import org.dom4j.DocumentException;
    import org.dom4j.Element;
    import org.dom4j.io.SAXReader;@SuppressWarnings("unchecked")
    public class XmlDao { /**
     * @param args
     * @throws MalformedURLException
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub XmlDao xd = new XmlDao(); String url = "myxml.xml";
    List<Element> list = xd.getElementByURL(url);
    for (int i = 0; i < list.size(); i++) {
    System.out.print(list.get(i).getName());
    System.out.print(" : ");
    System.out.println(list.get(i).getStringValue());
    } } public List<Element> getElementByURL(String url) {
    List<Element> list = new ArrayList<Element>();
    SAXReader reader = new SAXReader();
    Document document = null;
    try {
    document = reader.read(url);
    } catch (DocumentException e) {
    e.printStackTrace();
    }
    return getElementList(document.getRootElement().elements(), list);
    } private List<Element> getElementList(List<Element> elements,
    List<Element> list) {

    for (Element element : elements) {
    if (element.elements().size() == 0) {
    list.add(element);
    } else if (element.elements().size() > 0) {
    getElementList(element.elements(), list);
    }
    }
    return list;
    }}
    打印:
    [code]
    first : a 
    item : b 
    item : c 
    first : d 
    item : e 
    item : f 
    first : g 
    item : h 
    item : i 
    [/code]不知道你是不是要这个结果,顺便温习一下,要想代码健壮你再搞搞