Java操作XML工具类XmlUtil详解

网友投稿 643 2023-01-16


Java操作XML工具类XmlUtil详解

本文实例为大家分享了java操作XML工具类的具体代码,供大家参考,具体内容如下

一、代码

public class XmlUtil {

/**

* 将XML文件输出到指定的路径

*

* @param doc

* @param fileName

* @throws Exception

*/

public static void outputXml(Document doc, String fileName)

throws Exception {

TransformerFactory tf = TransformerFactory.newInstance();

Transformer transformer = tf.newTransformer();

DOMSource source = new DOMSource(doc);

transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));

StreamResult result = new StreamResult(pw);

transformer.transform(source, result);

System.out.println("生成XML文件成功!");

}

/**

* 生成XML

*

* @param ip

* @return

*/

public static Document generateXml(String ip) {

Document doc = null;

Element root = null;

try {

DocumentBuilderFactory factory = DocumentBuilderFactory

.newInstance();

DocumentBuilder builder = factory.newDocumentBuilder();

doc = builder.newDocument();

root = doc.createElement("errorDevices");

doc.appendChild(root);

} catch (Exception e) {

e.printStackTrace();

return null;// 如果出现异常,则不再往下执行

}

Element element;

element = doc.createElement("errorDevice");

element.setAttribute("ip", ip);

element.setAttribute("date",

StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss"));

element.setAttribute("status", "1");

root.appendChild(element);

return doc;

}

/**

* 新增Xml节点

*

* @param ip

* @param fileName

* @return

* @thhttp://rows FileNotFoundException

* @throws TransformerException

*/

public static void toWrite(String filename, String ip)

throws FileNotFoundException, TransformerException {

String date = StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss");

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = null;

Document doc = null;

try {

builder = factory.newDocumentBuilder();

doc = builder.parse(new File(filename));

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

NodeList links = doc.getElementsByTagName("errorDevice");

if (links.getLength() > 0) {

for (int i = 0; i < links.getLength(); i++) {

Node nd = links.item(i);

Node catParent = nd.getParentNode();

Element ele = (Element) nd;

String url = ele.getAttribute("ip");

if (url.equals(ip)) {

// ele.setAttribute("date", date);

catParent.removeChild(nd);

}

}

}

Element element = doc.createElement("errorDevice");

element.setAttribute("ip", ip);

element.setAttribute("date",

StringUtil.formatDate(new Date(), "yyyy-MM-dd hh:mm:ss"));

element.setAttribute("status", "1");

doc.getDocumentElement().appendChild(element);

TransformerFactory tf = TransformerFactory.newInstance();

Transformer transformer = tf.newTransformer();

DOMSource source = new DOMSource(doc);

transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

transformer.setOutputProperty(OutputKeys.INDENT, "yes");

PrintWriter pw = new PrintWriter(new FileOutputStream(filename));

StreamResult result = new StreamResult(pw);

transformer.transform(source, result);

System.out.println("新增XML节点成功!");

}

/**

* 读取XML

*

* @param filename

* @return

*/

public static List readXml(String filename){

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = null;

Document doc = null;

try {

builder = factory.newDocumentBuilder();

doc = builder.parse(new File(filename));

} catch (ParserConfigurationException e) {

e.printStackTrace();

} catch (SAXException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

NodeList links = doc.getElementsByTagName("errorDevice");

List list = new ArrayList();

for(int i = 0; i< links.getLength() ; i ++){

Element node = (Element)links.item(i);

Map map = new HashMap();

map.put(node.getAttribute("ip"), node.getAttribute("date"));

list.add(map);

}

return list;

}

}

二、演示XML

三、最终效果图


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java使用jacob将微软office中word、excel、ppt转成pdf
下一篇:关于手机 post测试的信息
相关文章

 发表评论

暂时没有评论,来抢沙发吧~