xml创建,解析,查找,删除.docx_第1页
xml创建,解析,查找,删除.docx_第2页
xml创建,解析,查找,删除.docx_第3页
xml创建,解析,查找,删除.docx_第4页
xml创建,解析,查找,删除.docx_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

package com.zjzs.xml;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.PrintWriter;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.OutputKeys;import javax.xml.transform.Transformer;import javax.xml.transform.TransformerConfigurationException;import javax.xml.transform.TransformerException;import javax.xml.transform.TransformerFactory;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.StreamResult;import javax.xml.xpath.XPath;import javax.xml.xpath.XPathConstants;import javax.xml.xpath.XPathExpressionException;import javax.xml.xpath.XPathFactory;import org.w3c.dom.DOMException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.w3c.dom.Text;import org.xml.sax.SAXException;import com.zjzs.errorInfo.ErrorInfo;import erFace.ISaveTimerXml;/* * * 在XML中增加节点 在原有的XML文件中,根据节点,添加数据 */public class SaveTimerXml implements ISaveTimerXml private DocumentBuilder builder;private String fileName = ;private String str = ;public SaveTimerXml() try DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();builder = factory.newDocumentBuilder();fileName = Thread.currentThread().getContextClassLoader().getResource(com/zjzs/data/TimerData.xml).toString().replace(file:/, ); catch (ParserConfigurationException e) / TODO Auto-generated catch blocke.printStackTrace();/ 创建xml/* * rName:报表名 rTimer:任务时间(月-日 时:分:秒04-01 15:00:00) * rType:报表类型(m:月报;q:季报;y:年报) rPath:报表运行环境 rSavePath:报表保存路径 rXzdqCode:行政地区编码 * rXzdqName:行政地区名称 pName:参数名称 */public String createXml(String rName, String rTimer, String rType,String rPath, String rSavePath, String rXzdqCode, String rXzdqName,String pName) String result = ok;try /添加任务时如果已有任务则删除报表信息removeNode(rName);/ 将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。Document doc = builder.parse(new File(fileName);/ 创建一个节点名为reportTimersElement reportTimers = doc.createElement(reportTimers);/ 为报表名称添加节点Element reportName = doc.createElement(reportName);Text textName = doc.createTextNode(rName); / 创建给定指定字符串的 Text 节点。reportName.appendChild(textName);reportTimers.appendChild(reportName);/ 为任务时间添加节点Element reportTimer = doc.createElement(reportTimer);Text txtTimer = doc.createTextNode(rTimer);reportTimer.appendChild(txtTimer);reportTimers.appendChild(reportTimer);/ 为报表类型(月:m;季:q;年:y)添加节点Element reportType = doc.createElement(rType);Text txtType = doc.createTextNode(rType);reportType.appendChild(txtType);reportTimers.appendChild(reportType);/ 为报表运行环境添加节点Element reportPath = doc.createElement(reportPath);Text txtrPath = doc.createTextNode(rPath);reportPath.appendChild(txtrPath);reportTimers.appendChild(reportPath);/ 为行政地区编码添加节点Element reportXzdqCode = doc.createElement(reportXzdqCode);Text textXzdqCode = doc.createTextNode(rXzdqCode);reportXzdqCode.appendChild(textXzdqCode);reportTimers.appendChild(reportXzdqCode);/ 为行政地区名称添加节点Element reportXzdqName = doc.createElement(reportXzdqName);Text textXzdqName = doc.createTextNode(rXzdqName);reportXzdqName.appendChild(textXzdqName);reportTimers.appendChild(reportXzdqName);/ 为报表excel保存路徑添加节点Element reportSavePath = doc.createElement(reportSavePath);Text textrSavePath = doc.createTextNode(rSavePath);reportSavePath.appendChild(textrSavePath);reportTimers.appendChild(reportSavePath);/ 为参数名添加节点Element parameterName = doc.createElement(parameterName);Text textParameterName = doc.createTextNode(pName);parameterName.appendChild(textParameterName);reportTimers.appendChild(parameterName);doc.getDocumentElement().appendChild(reportTimers);/ 保存数据到xml中saveXmlFile(doc); catch (IllegalArgumentException e) result = ErrorInfo.errorInfo(e);e.printStackTrace(); catch (FileNotFoundException e) result = ErrorInfo.errorInfo(e);e.printStackTrace(); catch (SAXException e) result = ErrorInfo.errorInfo(e);/ TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) result = ErrorInfo.errorInfo(e);/ TODO Auto-generated catch blocke.printStackTrace();return result;/ 解析xmlpublic void parserXml(String fileName) try DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();DocumentBuilder db = dbf.newDocumentBuilder();Document document = db.parse(fileName);NodeList employees = document.getChildNodes();for (int i = 0; i employees.getLength(); i+) Node employee = employees.item(i);NodeList employeeInfo = employee.getChildNodes();for (int j = 0; j employeeInfo.getLength(); j+) Node node = employeeInfo.item(j);NodeList employeeMeta = node.getChildNodes();for (int k = 0; k employeeMeta.getLength(); k+) System.out.println(employeeMeta.item(k).getNodeName()+ : + employeeMeta.item(k).getTextContent(); catch (FileNotFoundException e) e.printStackTrace(); catch (ParserConfigurationException e) e.printStackTrace(); catch (SAXException e) e.printStackTrace(); catch (IOException e) e.printStackTrace();/ 根据模板名删除模板信息public void removeNode(String rName) try / 将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。Document doc = builder.parse(new File(fileName);/ 创建一个节点名为 reportTimersElement reportTimers = doc.createElement(reportTimers);Element root = doc.getDocumentElement();reportTimers = (Element) selectSingleNode(/dataSource/reportTimersreportName= + rName + ,root);if (reportTimers != null) reportTimers.getParentNode().removeChild(reportTimers);saveXmlFile(doc); catch (DOMException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (SAXException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) / TODO Auto-generated catch blocke.printStackTrace();/ 根据任务计划时间查询相对应xml节点数据public String returnReportInfo(String rTimer) String error = ;NodeList result = null;try XPathFactory xpathFactory = XPathFactory.newInstance();XPath xpath = xpathFactory.newXPath();/ 将给定文件的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。Document doc = builder.parse(new File(fileName);/ 创建一个节点名为 reportTimersElement root = doc.getDocumentElement();int m = 0;try result = (NodeList) xpath.evaluate(/dataSource/reportTimersreportTimer= + rTimer+ , root, XPathConstants.NODESET);if (result.getLength() 1) m = 1; else m = result.getLength();for (int i = 0; i result.getLength() / m; i+) GetElement(result); catch (XPathExpressionException e) error = ErrorInfo.errorInfo(e);e.printStackTrace(); catch (DOMException e) error = ErrorInfo.errorInfo(e);/ TODO Auto-generated catch blocke.printStackTrace(); catch (SAXException e) error = ErrorInfo.errorInfo(e);/ TODO Auto-generated catch blocke.printStackTrace(); catch (IOException e) error = ErrorInfo.errorInfo(e);/ TODO Auto-generated catch blocke.printStackTrace();return str;/ 保存数据到xml文件中public void saveXmlFile(Document doc) TransformerFactory tf = TransformerFactory.newInstance();try Transformer transformer = tf.newTransformer();DOMSource source = new DOMSource(doc);transformer.setOutputProperty(OutputKeys.ENCODING, gb2312);transformer.setOutputProperty(OutputKeys.INDENT, yes);PrintWriter pw = new PrintWriter(new FileOutputStream(fileName);StreamResult result = new StreamResult(pw);transformer.transform(source, result); catch (TransformerConfigurationException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (IllegalArgumentException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (FileNotFoundException e) / TODO Auto-generated catch blocke.printStackTrace(); catch (TransformerException e) / TODO Auto-generated catch blocke.printStackTrace();/ 查找节点,并返回第一个符合条件节点public Node selectSingleNode(String express, Object source) Node result = null;XPathFactory xpathFactory = XPathFactory.newInstance();XPath xpath = xpathFactory.newXPath();try result = (Node) xpath.evaluate(express, source, XPathConstants.NODE); catch (XPathExpressionException e) e.printStackTrace();return result;/ 查找节点,返回符合条件的节点集。public NodeList selectNodes(String express, Object source) NodeList result = null;XPathFactory xpathFactory = XPathFactory.newInstance();XPath xpath = xpathFactory.newXPath();try result = (NodeList) xpath.evaluate(express, source,XPathConstants.NODESET); catch (XPathExpressionException e) e.printStackTrace();return result;/ 将node的XML字符串输出到控制台public static void output(Node node) TransformerFactory transFactory = TransformerFactory.newInstance();try Transformer transformer = transFactory.newTransformer();transformer.setOutputProperty(encoding, gb2312);transformer.setOutputProperty(indent, yes);DOMSource source = new DOMSource();source.setNode(n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论