当前位置: 代码迷 >> Java Web开发 >> xml 转译doc文件有关问题,请
  详细解决方案

xml 转译doc文件有关问题,请

热度:1577   发布时间:2016-04-10 22:48:40.0
xml 转译doc文件问题,请高手指点
如下xml文件:
 <a>
     <b>
        <c>内容1</c>
        <d>内容2</d>
    </b> 
    <b>
        <c>内容3</c>
        <d>内容4</d>
    </b>
    <e>...</e>
    <f>...</f>  
</a>

我将xml文件循环解析出来了,但是在转译成doc文件时,出现匹配<c>标签和<d>标签时,只显示最后出现的内容3和内容4两个,前面的被内容1和2被覆盖掉了。

例如  doc文件里有:     
                  员工A姓名:====c   性别:====d  
               员工B姓名:====c   性别:====d

我希望出现的匹配效果是:
                       员工A姓名:内容1    性别:内容2  
                   员工B姓名:内容3    性别:内容4

现在出现的匹配效果是:
                       员工A姓名:内容3    性别:内容4  
                   员工B姓名:内容3    性别:内容4


下面是解析代码:
       Map map = new HashMap();
      File inputXml = new File(fileName);
      SAXReader saxReader = new SAXReader();
      org.dom4j.Document document = saxReader.read(inputXml);
      Element element = document.getRootElement();
      List b= new ArrayList();
      for (Iterator i = element .elementIterator(); i.hasNext();) 
         {
           Element element2= (Element) i.next();
   map.put("====" + element2.getName().trim(), element2.getText().trim());
           if ("b".equals(element2.getName().trim())) 
             {
       Map map2= new HashMap();
       for (Iterator j = element2.elementIterator(); j.hasNext();) 
                  {
    Element element3= (Element) j.next();
    map2.put("====" + element3.getName().trim(), element3.getText().trim());
  }
       
       map.putAll(map2);
     } 
         }

下面是转译代码:
      Dispatch selection = app.getProperty("Selection").toDispatch();
      Set variableSet = variableMap.keySet();
     for (Iterator iterator = variableSet.iterator(); iterator.hasNext();) 
        {
 String key = (String) iterator.next();
 String value = (String) variableMap.get(key);
         boolean has = true;
 while (has) 
             {
      Dispatch.call(selection, "HomeKey", new Variant(6));
              //个人觉得应是这句从头开始的代码的问题,但是不知道该怎么改,求教

       Dispatch find = Dispatch.call(selection, "Find").toDispatch();
       Dispatch.put(find, "Text", key); 
      Dispatch.put(find, "Forward", "True");
      Dispatch.put(find, "Format", "True");
      Dispatch.put(find, "MatchCase", "True");
              Dispatch.put(find, "MatchWholeWord", "True");
              has = Dispatch.call(find, "Execute").getBoolean();         if (has) 
                {
    Dispatch.put(selection, "Text", value); }
            }
  相关解决方案