我是初遇这个问题,因为要用webservice对方系统返回很多xml文件比如说: <?xml version="1.0" encoding="GBK"?>
<Return>
<Zt>
<Err_code>0</Err_code>
<Err_msg>操作正确完成</Err_msg>
</Zt>
<Yhxx>
<Yhm>dsfjklklj7655347</Yhm>
<Mm>a13081453</Mm>
</Yhxx>
<Ztid>5020356</Ztid>
</Return>
我想把解析出来 因为这些数据 解析出来之后要加插入数据库中,我用DOM 来解析 但是只能解析这一个文件 后面还有很多像这样的文件 格式都差不多 只是数量会更大,我想问的是有没有一个能解析出所有这种xml的方法。
我想要的格式是
Err_code 0
Err_msg 0
Yhm dsfjklklj7655347
Mm a13081453
Ztid 5020356 这个格式是我想要的也就是说像 <Return> </Zt> <Yhxx> 这些就不打印了
<Return>
<Zt>
<Err_code>0</Err_code>
<Err_msg>操作正确完成</Err_msg>
</Zt>
<Yhxx>
<Yhm>dsfjklklj7655347</Yhm>
<Mm>a13081453</Mm>
</Yhxx>
<Ztid>5020356</Ztid>
</Return>
我想把解析出来 因为这些数据 解析出来之后要加插入数据库中,我用DOM 来解析 但是只能解析这一个文件 后面还有很多像这样的文件 格式都差不多 只是数量会更大,我想问的是有没有一个能解析出所有这种xml的方法。
我想要的格式是
Err_code 0
Err_msg 0
Yhm dsfjklklj7655347
Mm a13081453
Ztid 5020356 这个格式是我想要的也就是说像 <Return> </Zt> <Yhxx> 这些就不打印了
“格式都差不多 只是数量会更大”没有明白你的意思!楼主不厚道,结帖太少,回复的人就少了。
package com.java91.xml;import java.io.*;
import java.util.ArrayList;
import java.util.Date;import java.util.List;import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import com.java91.lesson01.bean.Student;public class JDomTest { public void readXML(String filename) { SAXBuilder builder = new SAXBuilder(false); // 使用JDOM首先要指定使用什么解析器,这表示使用的是默认的解析器 try { Document doc = builder.build(new File(filename)); // 得到Document Element students = doc.getRootElement(); // 得到根元素
List studentList = students.getChildren("student"); // 得到元素(节点)的集合 List list = new ArrayList();
Student stu; for (int i = 0; i < studentList.size(); i++) {
stu = new Student(); Element stuElement = (Element) studentList.get(i);
System.out.println("元素date:" + stuElement.getAttributeValue("date")); stu.setSno(stuElement.getChildText("sno"));
stu.setSname(stuElement.getChildText("sname"));
stu.setAge(Integer.valueOf(stuElement.getChildText("age")).intValue());
stu.setSex(stuElement.getChildText("sex"));
stu.setGrade(Integer.valueOf(stuElement.getChildText("grade")).intValue());
list.add(stu); // stuElement.getChild("sname").setText("赵六"); //设置元素的值
// stuElement.getAttribute("date").setValue(new
// Date().toLocaleString()); //设置元素属性的值 } // 保存Document的修改到XML文件中 // XMLOutputter outputter = new XMLOutputter();
// outputter.output(doc, new FileOutputStream(filename));
System.out.println(list.toString()); } catch (JDOMException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } public void createXML(String filename, List stuList) throws Exception { Element root = new Element("students");
Document Doc = new Document(root); Student student;
for (int i = 0; i < stuList.size(); i++) {
student = (Student) stuList.get(i); Element studentE = new Element("student"); studentE.setAttribute("date", new Date().toLocaleString()); studentE.addContent(new Element("sno").setText(student.getSno()));
studentE.addContent(new Element("sname").setText(student.getSname()));
studentE.addContent(new Element("age").setText("" + student.getAge()));
studentE.addContent(new Element("sex").setText(student.getSex()));
studentE.addContent(new Element("grade").setText("" + student.getGrade())); root.addContent(studentE);
}
XMLOutputter XMLOut = new XMLOutputter();
XMLOut.output(Doc, new FileOutputStream(filename));
} public static void main(String[] args) throws Exception {
JDomTest cx = new JDomTest();
List stuList = new ArrayList();
stuList.add(new Student("s01", "张三", 18, "M", 98));
stuList.add(new Student("s02", "张三", 18, "M", 98)); // cx.createXML("src/com/java91/xml/Student2.xml", stuList); cx.readXML("src/com/java91/xml/Student.xml"); }}
2.SAX
都可以
楼主找一个例子看看,
so easy·