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
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
//读取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>
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]不知道你是不是要这个结果,顺便温习一下,要想代码健壮你再搞搞