rt

解决方案 »

  1.   

    不用下,开发环境自带。
    下面是一下用dom解析xml的方法:
    Message.xml:
    <?xml version="1.0" encoding="GB2312"?><PeopleMessages>
     <message>
      <id>001</id>
      <Parentid>1</Parentid>
      <Fullname>张正明</Fullname>
      <address>
       <id>011</id>
       <Parentid>001</Parentid>
       <city>武汉</city>
       <country>中国</country>
      </address>
     </message>
     <message>
      <id>002</id>
      <Parentid>1</Parentid>
      <Fullname>刘德华</Fullname>
      <address>
       <id>012</id>
       <Parentid>002</Parentid>
       <city>香港</city>
       <country>中国</country>
      </address>
     </message>
     <message>
      <id>003</id>
      <Parentid>1</Parentid>
      <Fullname>张三丰</Fullname>
      <address>
       <id>013</id>
       <Parentid>003</Parentid>
       <city>不详</city>
       <country>中国</country>
      </address>
     </message>
     <message>
      <id>004</id>
      <Parentid>1</Parentid>
      <Fullname>Dav</Fullname>
      <address>
       <id>014</id>
       <Parentid>004</Parentid>
       <city>Washington</city>
       <country>America</country>
      </address>
     </message>
     <message>
      <id>005</id>
      <Parentid>1</Parentid>
      <Fullname>敏锐</Fullname>
      <address>
       <id>015</id>
       <Parentid>005</Parentid>
       <city>北京</city>
       <country>中国</country>
      </address>
     </message>
    </PeopleMessages>代码:
    package com;
    import java.io.File;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;public class ReadXml {
    public ReadXml(){}public void myRXML(){
    String fileName ="D:\\project\\myserver\\WebRoot\\Message.xml";
    File XmlFile=new File(fileName);
    DocumentBuilderFactory df=DocumentBuilderFactory.newInstance();
    DocumentBuilder builder=null;
        Document doc=null;
    try {
    builder=df.newDocumentBuilder();
    doc=builder.parse(XmlFile);
    ReadNode(doc);
    } catch (Exception e) {
    e.printStackTrace();
    }}
    public void ReadNode(Node myNode){
    for(int i=0;i<myNode.getChildNodes().getLength();i++){
    System.out.println("写入:"+myNode.getChildNodes().item(i).getNodeName()); ReadNode(myNode.getChildNodes().item(i));
    }
    }public static void main(String[] args){
    ReadXml rxml=new ReadXml();
    rxml.myRXML();
    }
    }
      

  2.   

    再给一个把XML数据封装二维数组的代码:
    Message.xml:
    <?xml version="1.0" encoding="GB2312"?><PeopleMessages>
     <message>
      <Peopleid>001</Peopleid>
      <Parentid>1</Parentid>
      <Fullname>张正明</Fullname>
      <address>
       <addressid>011</addressid>
       <Parentid>001</Parentid>
       <city>武汉</city>
       <country>中国</country>
      </address>
     </message>
     <message>
      <Peopleid>002</Peopleid>
      <Parentid>1</Parentid>
      <Fullname>刘德华</Fullname>
      <address>
       <addressid>012</addressid>
       <Parentid>002</Parentid>
       <city>香港</city>
       <country>中国</country>
      </address>
     </message>
     <message>
      <Peopleid>003</Peopleid>
      <Parentid>1</Parentid>
      <Fullname>张三丰</Fullname>
      <address>
       <addressid>013</addressid>
       <Parentid>003</Parentid>
       <city>不详</city>
       <country>中国</country>
      </address>
     </message>
     <message>
      <Peopleid>004</Peopleid>
      <Parentid>1</Parentid>
      <Fullname>Dav</Fullname>
      <address>
       <addressid>014</addressid>
       <Parentid>004</Parentid>
       <city>Washington</city>
       <country>America</country>
      </address>
     </message>
     <message>
      <Peopleid>005</Peopleid>
      <Parentid>1</Parentid>
      <Fullname>敏锐</Fullname>
      <address>
       <addressid>015</addressid>
       <Parentid>005</Parentid>
       <city>北京</city>
       <country>中国</country>
      </address>
     </message>
    </PeopleMessages>ReadXml.java:package com;
    import java.io.File;
    import java.util.ArrayList;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.Document;
    import org.w3c.dom.Node;public class ReadXml {
    public ReadXml(){}public void myRXML(){
    String fileName ="D:\\project\\myserver\\WebRoot\\Message.xml";
    File XmlFile=new File(fileName);
    DocumentBuilderFactory df=DocumentBuilderFactory.newInstance();
    DocumentBuilder builder=null;
        Document doc=null;
    try {
    builder=df.newDocumentBuilder();
    doc=builder.parse(XmlFile);
    } catch (Exception e) {
    e.printStackTrace();
    }
    ArrayList<String[]> myRXMLStr=new ArrayList<String[]>();
    ReadNode(doc,myRXMLStr);
    //输出到客户端,数据转换成数组
    int rcount=myRXMLStr.size();
    int ccount=myRXMLStr.get(0).length;
    String OutXmlData[][]=new String[rcount][ccount];
    for(int i=0;i<myRXMLStr.size();i++){
    for (int j=0;j<8;j++){
    String strXML=((String[])(myRXMLStr.get(i)))[j];
    OutXmlData[i][j]=strXML;
    }
    }

    //打印显示
    for(int i=0;i<rcount;i++){
    for(int j=0;j<ccount;j++){
    System.out.print(OutXmlData[i][j]+" ");
    }
    System.out.println();
    }
    }
    public void ReadNode(Node myNode,ArrayList<String[]> RXml){
    String[] RXmlStr= new String[8];
    for(int i=0;i<myNode.getChildNodes().getLength();i++){
    if (myNode.getChildNodes().item(i).getNodeName()=="Peopleid"){
    RXmlStr[0]=myNode.getChildNodes().item(i).getNodeName();
    RXmlStr[1]=myNode.getChildNodes().item(i).getChildNodes().item(0).getNodeValue();
    RXmlStr[2]=myNode.getChildNodes().item(i+2).getNodeName();
    RXmlStr[3]=myNode.getChildNodes().item(i+2).getChildNodes().item(0).getNodeValue();
    RXmlStr[4]=myNode.getChildNodes().item(i+4).getNodeName();
    RXmlStr[5]=myNode.getChildNodes().item(i+4).getChildNodes().item(0).getNodeValue();
    RXmlStr[6]="";
    RXmlStr[7]="";
    RXml.add(RXmlStr);
    }
    if (myNode.getChildNodes().item(i).getNodeName()=="addressid"){
    RXmlStr[0]=myNode.getChildNodes().item(i).getNodeName();
    RXmlStr[1]=myNode.getChildNodes().item(i).getChildNodes().item(0).getNodeValue();
    RXmlStr[2]=myNode.getChildNodes().item(i+2).getNodeName();
    RXmlStr[3]=myNode.getChildNodes().item(i+2).getChildNodes().item(0).getNodeValue();
    RXmlStr[4]=myNode.getChildNodes().item(i+4).getNodeName();
    RXmlStr[5]=myNode.getChildNodes().item(i+4).getChildNodes().item(0).getNodeValue();
    RXmlStr[6]=myNode.getChildNodes().item(i+6).getNodeName();
    RXmlStr[7]=myNode.getChildNodes().item(i+6).getChildNodes().item(0).getNodeValue();
    RXml.add(RXmlStr);
    }
    ReadNode(myNode.getChildNodes().item(i),RXml);
    }
    }public static void main(String[] args){
    ReadXml rxml=new ReadXml();
    rxml.myRXML();
    }
    }