我是初遇这个问题,因为要用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> 这些就不打印了   

解决方案 »

  1.   

    你既然都知道用dom解析了,很容易的事情啊!
    “格式都差不多 只是数量会更大”没有明白你的意思!楼主不厚道,结帖太少,回复的人就少了。
      

  2.   

    文件大的话建议用dom4j这个在性能上比dom更好
      

  3.   

    自己看,非常简单
    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"); }}
      

  4.   

    知道 用DOM 解析 , 那就很简单啊 , 结构差不多 那更好,写个通用的啊,如果有些结构不一样,那就搞些参数,判断一下结构解析啊。
      

  5.   

      1.DOM
      2.SAX
      都可以
      楼主找一个例子看看,
      so easy·