package test;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultAttribute;
import test.CreateDocumentImpl;
public class XmlParserToDoc
{
private CreateDocumentImpl docDocument;
// @SuppressWarnings("unchecked")
// public XmlParserToDoc(Element elm)
// {
// docDocument = new CreateDocumentImpl();
// String fileSrc = "E:\\华为.doc";
// Map attrlist = getNoteAttributes(elm);
// docDocument.initDocument(fileSrc, attrlist);
// // docDocument.openPdf();
// }
@SuppressWarnings("unchecked")
public XmlParserToDoc(Element elm)
{
docDocument = new CreateDocumentImpl();
String fileSrc = "E:\\华为.doc";
Map attrlist = getNoteAttributes(elm);
docDocument.initDocument(fileSrc, attrlist);
docDocument.openPdf();
}
public void closePdf()
{
docDocument.closePdf();
}
public static void main(String args[]) throws DocumentException
{
ArrayList<String> xml_path = new ArrayList<String>();
xml_path.add("E:\\User2.xml");
xml_path.add("E:\\gao.xml");
for(int i=0;i<xml_path.size();i++)
{
SAXReader reader = new SAXReader();
Document doc = reader.read(xml_path.get(i));
Element root = doc.getRootElement();
XmlParserToDoc nnd = new XmlParserToDoc(root);
nnd.getElementList(root);
}
docDocument.closePdf()
}
/**
* 获取节点所有属性值 <功能详细描述>
* @param element
* @return
* @see
*/
@SuppressWarnings("unchecked")
public Map getNoteAttributes(Element element)
{
DefaultAttribute e = null;
List list = element.attributes();
Map<String, String> attrmaps = new HashMap<String, String>();
for (int i = 0; i < list.size(); i++)
{
e = (DefaultAttribute)list.get(i);
attrmaps.put(e.getName(), e.getValue());
}
return attrmaps;
}
/**
* 递归遍历所有元素节点 <功能详细描述>
* @param element
* @see [类、类#方法、类#成员]
*/
public void getElementList(Element element)
{ // 适配器
adpateXmlElement(element);
}
/**
* 适配器xml
*/
@SuppressWarnings("unchecked")
public void adpateXmlElement(Element elm)
{
if ("table".equals(elm.getName()))
{
handleTable(elm);
}
else if ("list".equals(elm.getName()))
{
// 做列表的处理
handleList(elm);
}
else
{
List elements = elm.elements();
if (elements.isEmpty())
{
if ("image".equals(elm.getParent().getName()))
{
handleImage(elm);
}
else if ("second_title".equals(elm.getParent().getName()))
{
handleSecondTitle(elm);
}
else if ("first_title".equals(elm.getParent().getName()))
{
handleFirstTitle(elm);
}
else if ("caption".equals(elm.getName()))
{
handleCaption(elm);
}
else
{
handleOther(elm);
}
}
else
{
// 有子元素
Iterator it = elements.iterator();
while (it.hasNext())
{
Element elem = (Element)it.next();
getElementList(elem);
}
}
}
}
public void close()
{
docDocument.closePdf();
}
/**
* 处理表格标签
*/
@SuppressWarnings("unchecked")
public void handleTable(Element elm)
{
Map attrlist = getNoteAttributes(elm);
List tableValues = new ArrayList();
List trNodes = elm.elements();
for (Iterator trNode = trNodes.iterator(); trNode.hasNext();)
{
Element trContent = (Element)trNode.next();
List tdNodes = trContent.elements();
for (Iterator tdNode = tdNodes.iterator(); tdNode.hasNext();)
{
Element tdContent = (Element)tdNode.next();
String tdData = (String)tdContent.getData();
tableValues.add(tdData);
}
}
docDocument.addTable(tableValues, attrlist);
}
/**
* 处理列表标签
*
*/
@SuppressWarnings("unchecked")
public void handleList(Element elm)
{
// 做列表的处理
Map attrlist = getNoteAttributes(elm);
List itemNodes = elm.elements();
List dataSource = new ArrayList();
for (Iterator itemNode = itemNodes.iterator(); itemNode.hasNext();)
{
Element itemContent = (Element)itemNode.next();
String itemData = (String)itemContent.getData();
dataSource.add(itemData);
}
docDocument.addItem(dataSource, attrlist);
}
/**
* 处理一级标题
*
*/
@SuppressWarnings("unchecked")
public void handleFirstTitle(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource;
//System.out.println("wangjin:" + elm.getParent().attribute("id"));
if (elm.getParent().attribute("id") == null)
{
dataSource = "·" + elm.getText();
}
else if (elm.getParent().getParent().attribute("id") == null)
{
dataSource = "·" + elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
else
{
dataSource = "·" + elm.getParent().getParent().attributeValue("id")
+ "." + elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
docDocument.addText(dataSource, attrlist);
}
/**
* 处理列二级标题
*
*/
@SuppressWarnings("unchecked")
public void handleSecondTitle(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource;
if (elm.getParent().attribute("id") == null)
{
dataSource = elm.getText();
}
else if (elm.getParent().getParent().attribute("id") == null)
{
dataSource = "·" + elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
else if (elm.getParent().getParent().getParent().attribute("id") == null)
{
dataSource = "·" + elm.getParent().getParent().attributeValue("id")
+ "." + elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
else
{
dataSource = "·"
+ elm.getParent().getParent().getParent().attributeValue(
"id") + "."
+ elm.getParent().getParent().attributeValue("id") + "."
+ elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
docDocument.addText(dataSource, attrlist);
}
/**
* 处理图片
*/
@SuppressWarnings("unchecked")
public void handleImage(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource = elm.getText();
docDocument.addImage(dataSource, attrlist);
}
/**
*处理章节标题
*
*/
@SuppressWarnings("unchecked")
public void handleCaption(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource = elm.getText();
docDocument.addText(dataSource, attrlist);
}
/**
* 处理其他的标题
*/
@SuppressWarnings("unchecked")
public void handleOther(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource = elm.getText();
if (elm.getParent().attribute("id") == null)
{
dataSource = elm.getText();
}
else
{
dataSource = elm.getParent().attributeValue("id") + "、"
+ elm.getText();
docDocument.startNewPage();
System.err.println(elm.getParent().attribute("flag"));
}
docDocument.addText(dataSource, attrlist);
}
}
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultAttribute;
import test.CreateDocumentImpl;
public class XmlParserToDoc
{
private CreateDocumentImpl docDocument;
// @SuppressWarnings("unchecked")
// public XmlParserToDoc(Element elm)
// {
// docDocument = new CreateDocumentImpl();
// String fileSrc = "E:\\华为.doc";
// Map attrlist = getNoteAttributes(elm);
// docDocument.initDocument(fileSrc, attrlist);
// // docDocument.openPdf();
// }
@SuppressWarnings("unchecked")
public XmlParserToDoc(Element elm)
{
docDocument = new CreateDocumentImpl();
String fileSrc = "E:\\华为.doc";
Map attrlist = getNoteAttributes(elm);
docDocument.initDocument(fileSrc, attrlist);
docDocument.openPdf();
}
public void closePdf()
{
docDocument.closePdf();
}
public static void main(String args[]) throws DocumentException
{
ArrayList<String> xml_path = new ArrayList<String>();
xml_path.add("E:\\User2.xml");
xml_path.add("E:\\gao.xml");
for(int i=0;i<xml_path.size();i++)
{
SAXReader reader = new SAXReader();
Document doc = reader.read(xml_path.get(i));
Element root = doc.getRootElement();
XmlParserToDoc nnd = new XmlParserToDoc(root);
nnd.getElementList(root);
}
docDocument.closePdf()
}
/**
* 获取节点所有属性值 <功能详细描述>
* @param element
* @return
* @see
*/
@SuppressWarnings("unchecked")
public Map getNoteAttributes(Element element)
{
DefaultAttribute e = null;
List list = element.attributes();
Map<String, String> attrmaps = new HashMap<String, String>();
for (int i = 0; i < list.size(); i++)
{
e = (DefaultAttribute)list.get(i);
attrmaps.put(e.getName(), e.getValue());
}
return attrmaps;
}
/**
* 递归遍历所有元素节点 <功能详细描述>
* @param element
* @see [类、类#方法、类#成员]
*/
public void getElementList(Element element)
{ // 适配器
adpateXmlElement(element);
}
/**
* 适配器xml
*/
@SuppressWarnings("unchecked")
public void adpateXmlElement(Element elm)
{
if ("table".equals(elm.getName()))
{
handleTable(elm);
}
else if ("list".equals(elm.getName()))
{
// 做列表的处理
handleList(elm);
}
else
{
List elements = elm.elements();
if (elements.isEmpty())
{
if ("image".equals(elm.getParent().getName()))
{
handleImage(elm);
}
else if ("second_title".equals(elm.getParent().getName()))
{
handleSecondTitle(elm);
}
else if ("first_title".equals(elm.getParent().getName()))
{
handleFirstTitle(elm);
}
else if ("caption".equals(elm.getName()))
{
handleCaption(elm);
}
else
{
handleOther(elm);
}
}
else
{
// 有子元素
Iterator it = elements.iterator();
while (it.hasNext())
{
Element elem = (Element)it.next();
getElementList(elem);
}
}
}
}
public void close()
{
docDocument.closePdf();
}
/**
* 处理表格标签
*/
@SuppressWarnings("unchecked")
public void handleTable(Element elm)
{
Map attrlist = getNoteAttributes(elm);
List tableValues = new ArrayList();
List trNodes = elm.elements();
for (Iterator trNode = trNodes.iterator(); trNode.hasNext();)
{
Element trContent = (Element)trNode.next();
List tdNodes = trContent.elements();
for (Iterator tdNode = tdNodes.iterator(); tdNode.hasNext();)
{
Element tdContent = (Element)tdNode.next();
String tdData = (String)tdContent.getData();
tableValues.add(tdData);
}
}
docDocument.addTable(tableValues, attrlist);
}
/**
* 处理列表标签
*
*/
@SuppressWarnings("unchecked")
public void handleList(Element elm)
{
// 做列表的处理
Map attrlist = getNoteAttributes(elm);
List itemNodes = elm.elements();
List dataSource = new ArrayList();
for (Iterator itemNode = itemNodes.iterator(); itemNode.hasNext();)
{
Element itemContent = (Element)itemNode.next();
String itemData = (String)itemContent.getData();
dataSource.add(itemData);
}
docDocument.addItem(dataSource, attrlist);
}
/**
* 处理一级标题
*
*/
@SuppressWarnings("unchecked")
public void handleFirstTitle(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource;
//System.out.println("wangjin:" + elm.getParent().attribute("id"));
if (elm.getParent().attribute("id") == null)
{
dataSource = "·" + elm.getText();
}
else if (elm.getParent().getParent().attribute("id") == null)
{
dataSource = "·" + elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
else
{
dataSource = "·" + elm.getParent().getParent().attributeValue("id")
+ "." + elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
docDocument.addText(dataSource, attrlist);
}
/**
* 处理列二级标题
*
*/
@SuppressWarnings("unchecked")
public void handleSecondTitle(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource;
if (elm.getParent().attribute("id") == null)
{
dataSource = elm.getText();
}
else if (elm.getParent().getParent().attribute("id") == null)
{
dataSource = "·" + elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
else if (elm.getParent().getParent().getParent().attribute("id") == null)
{
dataSource = "·" + elm.getParent().getParent().attributeValue("id")
+ "." + elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
else
{
dataSource = "·"
+ elm.getParent().getParent().getParent().attributeValue(
"id") + "."
+ elm.getParent().getParent().attributeValue("id") + "."
+ elm.getParent().attributeValue("id") + "、"
+ elm.getText();
}
docDocument.addText(dataSource, attrlist);
}
/**
* 处理图片
*/
@SuppressWarnings("unchecked")
public void handleImage(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource = elm.getText();
docDocument.addImage(dataSource, attrlist);
}
/**
*处理章节标题
*
*/
@SuppressWarnings("unchecked")
public void handleCaption(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource = elm.getText();
docDocument.addText(dataSource, attrlist);
}
/**
* 处理其他的标题
*/
@SuppressWarnings("unchecked")
public void handleOther(Element elm)
{
Map attrlist = getNoteAttributes(elm);
String dataSource = elm.getText();
if (elm.getParent().attribute("id") == null)
{
dataSource = elm.getText();
}
else
{
dataSource = elm.getParent().attributeValue("id") + "、"
+ elm.getText();
docDocument.startNewPage();
System.err.println(elm.getParent().attribute("flag"));
}
docDocument.addText(dataSource, attrlist);
}
}