XML里面子节点名字相同属性不同怎么把下面XML解析出来求代码。在线等,解决马上结贴给分
<?xml version="1.0" encoding="GBK" ?>
<organ id="root" name="Virtual Root">
  <organ id="0000000000000000000000000000002" name="DepartmentName">
   <organ id="0000000000000000000000000000003" name="DepartmentName2">
<video_input_channel
subType="general_camera_vic/ip_camera_vic/mpu/rpu"
name="IP摄像头7"
naming="0000000000000000000000000000007:0000000000000000000000000000006:172.16.29.1:010001"
scheme="true"
isShare="true"
x="100"
y="100"
z="500"
hasPan="true/false"
isNAT="true/false" 
mainStream="true/false" 
subStream1="true/false" 
subStream2="true/false" 
subStream3="true/false"/>
<video_input_channel
subType="general_camera_vic"
name="普通摄像头8"
naming="0000000000000000000000000000008:0000000000000000000000000000006:172.16.29.1:010001"
scheme="true"
isShare="false"
x="100"
y="100"
z="500"
hasPan="true/false"
isNAT="true/false"  
mainStream="true/false"  
subStream1="true/false" 
subStream2="true/false" 
subStream3="true/false"/>
<video_output_channel
name="monitor_3"
naming="0000000000000000000000000000003:0000000000000000000000000000006:172.16.29.1:010001"
scheme="false"
isShare="false"
x="100"
y="100"
z="50"/>
<undefined_device
name="吉普车(京A0000)"
naming="0000000000000000000000000000007:0000000000000000000000000000006:172.16.29.1:010001"
type="gps/…"/>
</organ>
<video_input_channel
subType="ip_camera_vic"
name="IP摄像头9"
naming="0000000000000000000000000000009:0000000000000000000000000000006:172.16.29.1:010001"
scheme="true"
isShare="true"
x="100"
y="100"
z="500"
hasPan="true/false"
isNAT="true/false"  
mainStream="true/false"  
subStream1="true/false" 
subStream2="true/false" 
subStream3="true/false"/>
  </organ>
  <organ id="0000000000000000000000000010100" name="xx市平台" isShare="true" isPlatform="true">
  <organ id="0000000000000000000000000010101" name="xx县平台" isShare="true" isPlatform="true">
 </organ>
 </organ>
<interphone name=" " account=" " password="" address="" is_record="true/false" />
</organ>
XML

解决方案 »

  1.   

    还有解析后怎么通过servlet现实到另外的前天jsp页面上去。。不用一个个属性的去取吧?
      

  2.   

    看我的博客吧,我经常坐解析xml,搜easy
      

  3.   

    我用笨办法解决了package org.cl.jdom;import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.util.Iterator;
    import java.util.List;import org.cl.vo.Tuser;
    import org.jdom.Document;
    import org.jdom.Element;
    import org.jdom.JDOMException;
    import org.jdom.input.SAXBuilder;
    import org.lxh.smart.Request;public class LookJdom{
      public void LkJdom(InputStream ins1,Tuser user){
    //String xmlfile ="e:/test1.xml";

    SAXBuilder builder = new SAXBuilder(false);

    try {
    Document doc = builder.build(ins1);
    Element organ = doc.getRootElement();
    //解析organ属性
    String organId = organ.getAttributeValue("id");
    String organName = organ.getAttributeValue("name");
    System.out.println(organId);
    System.out.println(organName);
    //解析organ子最外层子节点organ1
    List list = organ.getChildren("organ");
    for(int x=0;x<list.size();x++){
    Element organ1 = (Element) list.get(x);
    String organId1 = organ1.getAttributeValue("id");
    String organName1 = organ1.getAttributeValue("name");
    String organIsShare1 = organ1.getAttributeValue("isShare");
    String organIsPlatform1 = organ1.getAttributeValue("isPlatform");
    System.out.println(organId1);
    System.out.println(organName1);
    System.out.println(organIsShare1);
    System.out.println(organIsPlatform1);

    Element organ2 = organ1.getChild("organ");
    String organId2 = organ2.getAttributeValue("id");
    String organName2 = organ2.getAttributeValue("name");
    String organIsShare2 = organ1.getAttributeValue("isShare");
    String organIsPlatform2 = organ1.getAttributeValue("isPlatform");
    System.out.println(organId2);
    System.out.println(organName2);
    System.out.println(organIsShare2);
    System.out.println(organIsPlatform2);
     
    }
    //解析organ最外层字节地internphone
    Element iph = organ.getChild("interphone");
    String iphName = iph.getAttributeValue("name");
    String iphAccount = iph.getAttributeValue("account");
    String iphPassword = iph.getAttributeValue("password");
    String iphAddress = iph.getAttributeValue("address");
    String iphIsrecord = iph.getAttributeValue("is_record");
    System.out.println(iphName);
    System.out.println(iphAccount);
    System.out.println(iphPassword);
    System.out.println(iphAddress);
    System.out.println(iphIsrecord);
    //解析organ1最外层的video_input_channel
    Element vic =  organ.getChild("organ").getChild("video_input_channel");
    String VicSt = vic.getAttributeValue("subType");
    String VicName = vic.getAttributeValue("name");
    String VicNaming = vic.getAttributeValue("naming");
    String VicScheme = vic.getAttributeValue("scheme");
    String VicIsShare = vic.getAttributeValue("isShare");
    String VicX = vic.getAttributeValue("x");
    String VicY = vic.getAttributeValue("y");
    String VicZ = vic.getAttributeValue("z");
    String VicHasPan = vic.getAttributeValue("hasPan");
    String VicIsNAT = vic.getAttributeValue("isNAT");
    String VicMainStream = vic.getAttributeValue("mainStream");
    String VicSubStream1 = vic.getAttributeValue("subStream1");
    String VicSubStream2 = vic.getAttributeValue("subStream2");
    String VicSubStream3 = vic.getAttributeValue("subStream3");
    System.out.println(VicSt);
    System.out.println(VicName);
    System.out.println(VicNaming);
    System.out.println(VicScheme);
    System.out.println(VicIsShare);
    System.out.println(VicX);
    System.out.println(VicY);
    System.out.println(VicZ);
    System.out.println(VicHasPan);
    System.out.println(VicIsNAT);
    System.out.println(VicMainStream);
    System.out.println(VicSubStream1);
    System.out.println(VicSubStream2);
    System.out.println(VicSubStream3);
    //解析organ2里面的video_input_channel

    List list1 = organ.getChild("organ").getChild("organ").getChildren("video_input_channel");
    for(int x=0;x<list1.size();x++){
    Element vic1 = (Element) list1.get(x);
    String Vic1St = vic1.getAttributeValue("subType");
    String Vic1Name = vic1.getAttributeValue("name");
    String Vic1Naming = vic1.getAttributeValue("naming");
    String Vic1Scheme = vic1.getAttributeValue("scheme");
    String Vic1IsShare = vic1.getAttributeValue("isShare");
    String Vic1X = vic1.getAttributeValue("x");
    String Vic1Y = vic1.getAttributeValue("y");
    String Vic1Z = vic1.getAttributeValue("z");
    String Vic1HasPan = vic1.getAttributeValue("hasPan");
    String Vic1IsNAT = vic1.getAttributeValue("isNAT");
    String Vic1MainStream = vic1.getAttributeValue("mainStream");
    String Vic1SubStream1 = vic1.getAttributeValue("subStream1");
    String Vic1SubStream2 = vic1.getAttributeValue("subStream2");
    String Vic1SubStream3 = vic1.getAttributeValue("subStream3");
    System.out.println(Vic1St);
    System.out.println(Vic1Name);
    System.out.println(Vic1Naming);
    System.out.println(Vic1Scheme);
    System.out.println(Vic1IsShare);
    System.out.println(Vic1X);
    System.out.println(Vic1Y);
    System.out.println(Vic1Z);
    System.out.println(Vic1HasPan);
    System.out.println(Vic1IsNAT);
    System.out.println(Vic1MainStream);
    System.out.println(Vic1SubStream1);
    System.out.println(Vic1SubStream2);
    System.out.println(Vic1SubStream3);
    }
    //解析organ2里面的video_output_channel 
        Element voc = organ.getChild("organ").getChild("organ").getChild("video_output_channel");
        String VocName = voc.getAttributeValue("name");
    String VocNaming = voc.getAttributeValue("naming");
    String VocScheme = voc.getAttributeValue("scheme");
    String VocIsShare = voc.getAttributeValue("isShare");
    String VocX = voc.getAttributeValue("x");
    String VocY = voc.getAttributeValue("y");
    String VocZ = voc.getAttributeValue("z");
    System.out.println(VocName);
    System.out.println(VocNaming);
    System.out.println(VocScheme);
    System.out.println(VocIsShare);
    System.out.println(VocX);
    System.out.println(VocY);
    System.out.println(VocZ);
    //解析organ2里面的undefined_device
    Element ud = organ.getChild("organ").getChild("organ").getChild("undefined_device");
    String VdName = ud.getAttributeValue("name");
    String VdNaming = ud.getAttributeValue("naming");
    String VdType = ud.getAttributeValue("type");
    System.out.println(VdName);
    System.out.println(VdNaming);
    System.out.println(VdType);


    } catch (JDOMException e) {
    e.printStackTrace();
    }
     catch (Exception e){
     e.printStackTrace();
     }
    }
      public static void main(String[] args){
      new LookJdom();
      
      }
    }
    请问怎么能将解析的信息返回到新的JSP页面上 以树的形式。我这个主要用servlet作为后台控制