根据自定义位置的xml文件获取需要的数据,将获取到的数据存放到新创建的xml相应的位置。
创建新XMl文档的方法:
1、
//创建XML文档的根
Document document = DocumentHelper.createDocument();
//创建XML文档的根元素
Element xmlRoot = DocumentHelper.createElement(“Person”);
document.setRootElement(xmlRoot);
2、
Element root = DocumentHelper.createElement(“Document”);
Document createDocument = DocumentHelper.createDocument(root);
//要获取数据的地址
String classPath = "XXX/XXX/page_columnid_month.xml";
//根据地址获取相应xml的Document
Document document = XmlUtil.getDocument(classPath);
if(document != null){
//获取根下的articles节点下的article节点
List<?> list = document.selectNodes("/articles/article");
int listSize = list.size();
//获取Element属性,其中root为创建一个根为Document的xml
Element orgElement = null,
element = null,
root = DocumentHelper.createElement("Document");
Document createDocument = DocumentHelper.createDocument(root);
//循环遍历page_columnid_month.xml中的数据
for(int i = 0; i < listSize; i++){
orgElement=(Element)list.get(i);
//创建document节点
element = root.addElement("document");
//创建下一级节点,可以为多个
element.addElement("title")
.addText(orgElement.elementTextTrim("title"));
element.addElement("数量")
.addElement("count")
.addText(orgElement.elementTextTrim("count"));
}
//新生成的文件保存地址
File file = new File(
"D:/"+classPath.substring(classPath.lastIndexOf("/")));
XmlUtil.writeXml(file, createDocument, null);
return true;
}
return false;
获取xml中的数据,并将获取到的数据返回
InputStream inputStream = null;
inputStream = XmlUtil.class.getClassLoader().getResourceAsStream(classPath);
Document document = null;
SAXReader saxReader = null;
saxReader = new SAXReader();
if(inputStream != null){
try {
document = saxReader.read(inputStream);
} catch (DocumentException e) {
e.printStackTrace();
}
}
return document;
判断文件自定义位置的文件是否存在,如果不存在就新建。并将将新建的xml写入到指定的xml文档中
File isFile = file.getParentFile();
if(!isFile .exists()){
isFile .mkdirs();
}
boolean result = true;
if(fmt == null){
//设置美观的缩进格式,便于阅读
fmt = OutputFormat.createPrettyPrint();
//设置XML编码类型
fmt.setEncoding("UTF-8");
//设置表头与根目录换行
fmt.setSuppressDeclaration(true);
//设置是否缩进
fmt.setIndent(true);
//设置是否换行
fmt.setNewlines(true);
}
XMLWriter xmlWriter = null;
try {
xmlWriter=new XMLWriter(new PrintWriter(file), fmt);
xmlWriter.write(document);
xmlWriter.close();
} catch (IOException e) {
result=false;
e.printStackTrace();
}
return result;
结果:
<Document>
<document>
<title>参阅思考</title>
<数量>
<count>74755</count>
</数量>
</document>
<document>
<title>后勤综合</title>
<数量>
<count>55681</count>
</数量>
</document>
</Document>
以上属于个人理解,如有不同意见,可在评论区留下宝贵意见。