Java操作XML工具類:XmlUtil__個人作品

來源:互聯網
上載者:User
一、代碼:
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 * @throws 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<Map> 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<Map> list = new ArrayList<Map>();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

<?xml version="1.0" encoding="UTF-8" standalone="no"?><errorDevices><errorDevice date="2017-03-13 12:54:16" ip="20.100.156.42" status="1"/><errorDevice date="2017-03-13 12:54:56" ip="20.100.156.41" status="1"/></errorDevices>

三、最終效果圖
四、什麼是XML     XML(可延伸標記語言 (XML)),出生於1998年,W3C出品,資料驅動,是一款不新潮但很實用的語言。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.