我们在这里只讨论解决问题的方法,决体的代码还是自己去写,别人也没有那么多时间按照你的要求去实现你的功能。
java里面解析xml,我用的是jdom包, 他可以把xml转换为一个树型的对象,然后遍历所有的节点,注意,在遍历所有节点的时候,算法最好采用嵌套法。就是让每个子节点都遍历完所有的儿子节点。 这里有我用的解析xml的一个class, 你可以参考参考 package lbscomm;import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.xml.sax.*;/**
* <p>Title: </p>
* <p>Description:</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: ytinfo</p>
* @author Napoleonz
* @version 1.0
*/public class XmlChange {
Element findel = null;
public XmlChange(String str) {
// byte[] buff = new byte[1024]; //定义数组
//InputStream instr=null;//读取数据的对象
//boolean cont = true;
//对于指定的端口,生成socket
//生成instr对象,准备读取的对象
//OutputStream outstr;
//InputStream instr;
try
{
readXML test = new readXML(new InputSource(new StringReader(str)));
test.readXMLFile();
}
catch (JDOMException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
} //XmlChange
class readXML {
public InputSource yourStr;
public readXML(InputSource files) {
yourStr = files;
} public void readXMLFile() throws JDOMException, IOException {
//DOMBuilder builder=new DOMBuilder();
SAXBuilder sbuilder = new SAXBuilder();
Document doc = new Document();
//doc=sbuilder.build(new File(xmlFile));
//doc=sbuilder.build(new InputStream(new StringReader(yourStr));
doc = sbuilder.build(yourStr);
LbsMpa.xlong = getXmlData(doc, "X");
LbsMpa.ylat = getXmlData(doc, "Y");
} //readXMLFile public String getXmlData(Document mdoc, String sname) {
List datalist = null;
String eltext = null;
Element el = null;
ArrayList alist = new ArrayList();
Element eroot = mdoc.getRootElement(); //得到根元素
List rlist = eroot.getChildren();
searchElement(rlist, sname); //datalist = findel.getChildren();
//Iterator i = datalist.iterator();
//while (i.hasNext()) {
//el = (Element) i.next();
eltext = findel.getText();
// }
return eltext;
} /************************************
*功能:查找你想要的元素
* @param lparam 是个list类型的链表,表示某结点的孩子数
* @param sname 是你想找的元素名称
*/ public void searchElement(List lparam, String sname) {
Element el = null;
Iterator i = lparam.iterator();
while (i.hasNext()) {
el = (Element) i.next();
String elname = el.getName();
//elname = elname.trim();
if (sname.equals(elname)) {
findel = el;
break;
}
else {
if (el.getChildren().size()>0) {
List childlist = el.getChildren();
searchElement(childlist, sname);
}
}
} //while
} //searchElement
}//readXML
}
这里用的jdom包网上可以找到,登陆sun公司的网站就有
祝你好运
java里面解析xml,我用的是jdom包, 他可以把xml转换为一个树型的对象,然后遍历所有的节点,注意,在遍历所有节点的时候,算法最好采用嵌套法。就是让每个子节点都遍历完所有的儿子节点。 这里有我用的解析xml的一个class, 你可以参考参考 package lbscomm;import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.xml.sax.*;/**
* <p>Title: </p>
* <p>Description:</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Company: ytinfo</p>
* @author Napoleonz
* @version 1.0
*/public class XmlChange {
Element findel = null;
public XmlChange(String str) {
// byte[] buff = new byte[1024]; //定义数组
//InputStream instr=null;//读取数据的对象
//boolean cont = true;
//对于指定的端口,生成socket
//生成instr对象,准备读取的对象
//OutputStream outstr;
//InputStream instr;
try
{
readXML test = new readXML(new InputSource(new StringReader(str)));
test.readXMLFile();
}
catch (JDOMException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
System.exit(1);
}
} //XmlChange
class readXML {
public InputSource yourStr;
public readXML(InputSource files) {
yourStr = files;
} public void readXMLFile() throws JDOMException, IOException {
//DOMBuilder builder=new DOMBuilder();
SAXBuilder sbuilder = new SAXBuilder();
Document doc = new Document();
//doc=sbuilder.build(new File(xmlFile));
//doc=sbuilder.build(new InputStream(new StringReader(yourStr));
doc = sbuilder.build(yourStr);
LbsMpa.xlong = getXmlData(doc, "X");
LbsMpa.ylat = getXmlData(doc, "Y");
} //readXMLFile public String getXmlData(Document mdoc, String sname) {
List datalist = null;
String eltext = null;
Element el = null;
ArrayList alist = new ArrayList();
Element eroot = mdoc.getRootElement(); //得到根元素
List rlist = eroot.getChildren();
searchElement(rlist, sname); //datalist = findel.getChildren();
//Iterator i = datalist.iterator();
//while (i.hasNext()) {
//el = (Element) i.next();
eltext = findel.getText();
// }
return eltext;
} /************************************
*功能:查找你想要的元素
* @param lparam 是个list类型的链表,表示某结点的孩子数
* @param sname 是你想找的元素名称
*/ public void searchElement(List lparam, String sname) {
Element el = null;
Iterator i = lparam.iterator();
while (i.hasNext()) {
el = (Element) i.next();
String elname = el.getName();
//elname = elname.trim();
if (sname.equals(elname)) {
findel = el;
break;
}
else {
if (el.getChildren().size()>0) {
List childlist = el.getChildren();
searchElement(childlist, sname);
}
}
} //while
} //searchElement
}//readXML
}
这里用的jdom包网上可以找到,登陆sun公司的网站就有
祝你好运
NodeList lstNode = root.getElementsByTagName("lists");
Node node = lstNode.item(0);
String message = node.getNodeName(); if (node.hasChildNodes()){
for (int loop=0;loop < node.getChildNodes().getLength();loop++){
if (!((Node)node.getChildNodes().item(loop)).getNodeName().trim().equals("#text")){
Node subNode = node.getChildNodes().item(loop); System.out.println(subNode.getNodeName());
}
else{
System.out.println("null");
} } }
return null;
}