<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header>
<ServiceName SOAP-ENV:mustUnderstand="1" xmlns="urn:go.jp:xmlns:AAA.BBBB.Service">SERVICE</ServiceName>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<Data xmlns="urn:go.jp:xmlns:AAA.BBBB.Service">
<Tbl name="SYSIN">
<Rec>
<Item name="Date">20080527</Item>
<Item name="PersonalNo">01234567</Item>
</Rec>
</Tbl>
</Data>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【redcellx】截止到2008-07-22 14:39:33的历史汇总数据(不包括此帖):
    发帖的总数量:2                        发帖的总分数:30                       每贴平均分数:15                       
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:2                        结贴的总分数:30                       
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    你可以使用Dom4j来解析嘛,里面有一个xpath的功能,直接按照路径就可以得到你要的东西了
      

  3.   

    使用dom4j或者sax都很方便。
    不知道你要解析到什么东西。
      

  4.   

    java下的xml解析器有好几种:
    sax,jdom,dom4j,
      

  5.   


    这是几种常用得比较。
    <?xml version="1.0" encoding="GB2312"?> 
    <RESULT> 
    <VALUE> 
       <NO>A1234</NO> 
       <ADDR>XX号</ADDR> 
    </VALUE> 
    <VALUE> 
       <NO>B1234</NO> 
       <ADDR>XX组</ADDR> 
    </VALUE> 
    </RESULT> 
    1)DOM import java.io.*; 
    import java.util.*; 
    import org.w3c.dom.*; 
    import javax.xml.parsers.*; public class MyXMLReader{ 
     public static void main(String arge[]){   long lasting =System.currentTimeMillis(); 
      try{ 
       File f=new File("data_10k.xml"); 
       DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); 
       DocumentBuilder builder=factory.newDocumentBuilder(); 
       Document doc = builder.parse(f); 
       NodeList nl = doc.getElementsByTagName("VALUE"); 
       for (int i=0;i<nl.getLength();i++){ 
        System.out.print("车牌号码:" + doc.getElementsByTagName("NO").item(i).getFirstChild().getNodeValue()); 
        System.out.println("车主地址:" + doc.getElementsByTagName("ADDR").item(i).getFirstChild().getNodeValue()); 
       } 
      }catch(Exception e){ 
       e.printStackTrace(); 
    } 2)SAX import org.xml.sax.*; 
    import org.xml.sax.helpers.*; 
    import javax.xml.parsers.*; public class MyXMLReader extends DefaultHandler {  java.util.Stack tags = new java.util.Stack(); 
     public MyXMLReader() { 
      super(); 
    }  public static void main(String args[]) { 
      long lasting = System.currentTimeMillis(); 
      try { 
       SAXParserFactory sf = SAXParserFactory.newInstance(); 
       SAXParser sp = sf.newSAXParser(); 
       MyXMLReader reader = new MyXMLReader(); 
       sp.parse(new InputSource("data_10k.xml"), reader); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      }   System.out.println("运行时间:" + (System.currentTimeMillis() - lasting) + "毫秒");} 
      public void characters(char ch[], int start, int length) throws SAXException { 
      String tag = (String) tags.peek(); 
      if (tag.equals("NO")) { 
       System.out.print("车牌号码:" + new String(ch, start, length)); 

    if (tag.equals("ADDR")) { 
      System.out.println("地址:" + new String(ch, start, length)); 

    }   public void startElement(String uri,String localName,String qName,Attributes attrs) { 
      tags.push(qName);} 
    } 3) JDOM import java.io.*; 
    import java.util.*; 
    import org.jdom.*; 
    import org.jdom.input.*; public class MyXMLReader {  public static void main(String arge[]) { 
      long lasting = System.currentTimeMillis(); 
      try { 
       SAXBuilder builder = new SAXBuilder(); 
       Document doc = builder.build(new File("data_10k.xml")); 
       Element foo = doc.getRootElement(); 
       List allChildren = foo.getChildren(); 
       for(int i=0;i<allChildren.size();i++) { 
        System.out.print("车牌号码:" + ((Element)allChildren.get(i)).getChild("NO").getText()); 
        System.out.println("车主地址:" + ((Element)allChildren.get(i)).getChild("ADDR").getText()); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
    } } 4)DOM4J import java.io.*; 
    import java.util.*; 
    import org.dom4j.*; 
    import org.dom4j.io.*; public class MyXMLReader {  public static void main(String arge[]) { 
      long lasting = System.currentTimeMillis(); 
      try { 
       File f = new File("data_10k.xml"); 
       SAXReader reader = new SAXReader(); 
       Document doc = reader.read(f); 
       Element root = doc.getRootElement(); 
       Element foo; 
       for (Iterator i = root.elementIterator("VALUE"); i.hasNext() { 
        foo = (Element) i.next(); 
        System.out.print("车牌号码:" + foo.elementText("NO")); 
        System.out.println("车主地址:" + foo.elementText("ADDR")); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 

      

  6.   

    还有你要注意的是,你的xml文档是有名称空间的,也就是说
    你在解析的时候,还要处理名称空间。
      

  7.   

    /**
     * PraseCSDNXML.java
     */
    package black.test;import java.io.File;
    import java.io.IOException;import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Attr;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;/**
     * @author black
     * @version 1.0
     * @CreateDate 2008-7-22下午05:35:56
     */
    public class PraseCSDNXML { /**
     * @param args
     */

    File file = new File("csdnTest.xml");
    public static void main(String[] args) {
    new PraseCSDNXML().praseXML();
    }

    public void praseXML() {
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

    try {
    DocumentBuilder builder = dbf.newDocumentBuilder();
    Document doc = builder.parse(file);

    NodeList elementsList = doc.getElementsByTagName("SOAP-ENV:Envelope");

    for(int i=0;i<elementsList.getLength();i++) {
    Element ele = (Element) elementsList.item(i);

    System.out.print(ele.getNodeName() + "    ");
    Attr attr = ele.getAttributeNode("xmlns:SOAP-ENV");
    System.out.println(attr.getName() + " = " + attr.getValue());

    NodeList headerList = ele.getElementsByTagName("SOAP-ENV:Header");

    for( int j=0; j<headerList.getLength(); j++ ) {
    Element headEle = (Element) headerList.item(j);

    System.out.println("   " + headEle.getNodeName());

    // <SOAP-ENV:Header> 节点

    NodeList serverList = headEle.getElementsByTagName("ServiceName");
    for( int k=0; k<serverList.getLength(); k++ ) {

    Element serEle = (Element) serverList.item(k);
    Attr serAttr1 = serEle.getAttributeNode("SOAP-ENV:mustUnderstand");
    Attr serAttr2 = serEle.getAttributeNode("xmlns");

    // bug

    // System.out.println("      " + serEle.getNodeName() + ",  " + serEle.getNodeValue());
    System.out.print("      " + serEle.getNodeName() + "  ");

    System.out.print(serAttr1.getName() + " = " + serAttr1.getValue() + "   ");
    System.out.println(serAttr2.getName() + " = " + serAttr2.getValue());
    }

    // <SOAP-ENV:Body> 节点
    NodeList bodyList = ele.getElementsByTagName("SOAP-ENV:Body");

    for( int n=0; n<bodyList.getLength(); n++) {
    Element bodyEle = (Element) bodyList.item(n);
    NodeList dataEle = bodyEle.getElementsByTagName("Data");

    System.out.println("   " + bodyEle.getNodeName());

    for(int l=0; l<dataEle.getLength(); l++ ) {
    Element tblEle = (Element) dataEle.item(l);
    Attr attr2 = tblEle.getAttributeNode("xmlns");
    System.out.print("      " + tblEle.getNodeName() + "   ");
    System.out.println(attr2.getName() + " = " + attr2.getValue());

    NodeList tblList = tblEle.getElementsByTagName("Tbl");

    for( int o=0; o<tblList.getLength(); o++ ) {
    Element tEle = (Element) tblList.item(o);

    System.out.print("      " + tEle.getNodeName() + "   ");

    Attr attr3 = tEle.getAttributeNode("name");
    System.out.println(attr3.getName() + " = " + attr3.getValue());

    NodeList recList = tEle.getElementsByTagName("Rec");

    for( int p=0; p<recList.getLength(); p++) {
    Element rEle = (Element) recList.item(p);

    System.out.println("      " + rEle.getNodeName());

    NodeList itemList = rEle.getElementsByTagName("Item");

    for( int u=0; u<itemList.getLength(); u++) {
    Element itemEle = (Element) itemList.item(u);

    Attr attr4 = itemEle.getAttributeNode("name");

    System.out.print("         " + itemEle.getNodeName() + "   ");

    System.out.println(attr4.getName() + " = " + attr4.getValue());

    // System.out.println(attr4.getValue());
    }
    }
    }
    }
    }
    }
    }



    } catch (ParserConfigurationException e) {
    e.printStackTrace();
    } catch (SAXException e) {
    e.printStackTrace();
    } catch (IOException e) {
    e.printStackTrace();
    }

    }}
    //  outputSOAP-ENV:Envelope    xmlns:SOAP-ENV = http://schemas.xmlsoap.org/soap/envelope/
       SOAP-ENV:Header
          ServiceName  SOAP-ENV:mustUnderstand = 1   xmlns = urn:go.jp:xmlns:AAA.BBBB.Service
       SOAP-ENV:Body
          Data   xmlns = urn:go.jp:xmlns:AAA.BBBB.Service
          Tbl   name = SYSIN
          Rec
             Item   name = Date
             Item   name = PersonalNo   注: 还有个问题,就是SERVICE  20080527   01234567 的值  没有打印出来了,,,我看了半天 ,不晓得那有问题。我记得我以前的写的没什么问题。  大家帮我看看。怎么输入 元素里值。。
    // csdnTest.xml  是 你要解析的XML文件。 就LZ帖出来的。