<DIE_INFORMATION>
<PART_INFO>
<ENGINEERING_INFO>
<PART_NO>零件图号</PART_NO>
<PART_PARTVERSION>零件版次</PART_PARTVERSION>
<PART_PARTNAME>零件名称</PART_PARTNAME> </ENGINEERING_INFO>
<GEOMETRY_INFO>
<GEO_L>零件展开长度</GEO_L>
<GEO_ML>毛料长度</GEO_ML>
</GEOMETRY_INFO>
</PART_INFO>
<DIE_INFO>
<DIE_NO>模具图号</DIE_NO>
<DIE_STRUCT>
<STR_S>结构1名称</STR_S>
<STR_T>厚度</STR_T>
</DIE_STRUCT>
<DIE_STRUCT>
<STR_S>结构2名称</STR_S>
<STR_T>厚度</STR_T>
</DIE_STRUCT>
<DIE_MATIRIAL>
<MAT_MAT>模具材料</MAT_MAT>
<MAT_R1>预备热处理</MAT_R1>
<MAT_R2>最终热处理</MAT_R2>
</DIE_MATIRIAL>
<DIE_GEOMETRY>
<GEO_POINT ID="1">1.0,1.6,1.9</GEO_POINT>
<GEO_POINT ID="2">2.3,2.5,2.9</GEO_POINT>
<GEO_POINT ID="3">301,32.96,3.4</GEO_POINT>
………………
</DIE_GEOMETRY>
</DIE_INFO>
</DIE_INFORMATION>
Java代码://dom4j
***********************************************************************************************try {
    if(type.equals("xml")){
      SAXReader reader = new SAXReader();
      Document document = reader.read(new File(filePath));
    
      Node treeNode01=document.selectSingleNode("//PART_INFO//ENGINEERING_INFO//PART_NO");//零件图号
      Node treeNode02=document.selectSingleNode("//PART_INFO//ENGINEERING_INFO//PART_PARTVERSION");//零件版次
      Node treeNode03=document.selectSingleNode("//PART_INFO//GEOMETRY_INFO//GEO_L");//零件长度
      Node treeNode04=document.selectSingleNode("//PART_INFO//GEOMETRY_INFO//GEO_ML");//毛料长度      Node treeNode05=document.selectSingleNode("//DIE_INFO//DIE_GEOMETRY//GEO_POINT");//几何信息
//此处不知道怎样把数据取出来,数据不只三条,每条数据包含三个数值
在java下采用dom4j,
在读取DIE_INFO//DIE_GEOMETRY的时候,需要把每一行里面的三个数据存储到三维数组里面,数据的数量不定,请大家指导一下如何读取,谢谢。

解决方案 »

  1.   

    你看看XStream能不能解决你的问题吧,你这种方式我没有试过,
      

  2.   

    别用node,用element
    Element root = document.getRootElement();
    List ls = root.element("DIE_INFO").element("DIE_GEOMETRY").elements("GEO_POINT");
    然后遍历ls
      

  3.   

    这个简单啊...翻下dom4j的api你就知道了..
    node05返回的是一个list
    定义一个Map<Integer,String> map
    你对list进行迭代罗. dom4j可以直接拿属性值的.拿到id做为key,放到map里,拿出后面的值做为一个整String放到map里面.
    再对map进行迭代...用 string.split(",") 返回来的就是一个length=3的数组啊..
    下面的具体操作就看你的需求了....具体代码我就不想写了.今天帮人回答几个面试的算法题.有些累了.要不你加我好友吧.晚上回家,有时间帮你写..返正操作xml除了读取技术外,就是list 和map set的应用了...看你熟悉这几个不了...
      

  4.   

    1.取得某节点下的某属性
                 Element root=document.getRootElement();    
                 Attribute attribute=root.attribute("size");// 属性名name
    2.取得属性的文字
                 String text=attribute.getText();也可以用:
    String text2=root.element("name").attributeValue("firstname");这个是取得根节点下name字节点的属性firstname的值.3.遍历某节点的所有属性
      Element root=document.getRootElement();    
                for(Iterator it=root.attributeIterator();it.hasNext();){
                     Attribute attribute = (Attribute) it.next();
                     String text=attribute.getText();
                     System.out.println(text);
                 }
    4.设置某节点的属性和文字.
    newMemberElm.addAttribute("name", "sitinspring");
    5.设置属性的文字
                 Attribute attribute=root.attribute("name");
                 attribute.setText("sitinspring");
    6.删除某属性
                 Attribute attribute=root.attribute("size");// 属性名name
                 root.remove(attribute);