如下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); }
}