Heim >Backend-Entwicklung >XML/RSS-Tutorial >Zusammenfassung der Vorgänge zum Parsen, Hinzufügen und Löschen von XML-Dateien in Java
1. Java-Code:
Verwenden Sie hauptsächlich DOM für den Betrieb
package test; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; 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 org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.Text; import org.xml.sax.SAXException; public class XmlOprate { Document doc; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder; NodeList imags; String path; public NodeList getImags() { return imags; } public void setImags(NodeList imags) { this.imags = imags; } /** * 构造方法 * @param path:xml文件的路径 * @param nodes:要解析的xml节点名称 */ public XmlOprate(String path) { super(); this.path = path; System.out.println(System.getProperty("user.dir")); } /** * 解析XML * @param path */ public void readXml(){ try { builder = factory.newDocumentBuilder(); Document doc=builder.parse(path); doc.normalize(); NodeList imags =doc.getElementsByTagName("imags"); this.setImags(imags); for (int i=0;i<imags.getLength();i++){ Element link=(Element) imags.item(i); System.out.print("title: "); System.out.println(link.getElementsByTagName("title").item(0).getFirstChild().getNodeValue()); System.out.print("URL: "); System.out.println(link.getElementsByTagName("url").item(0).getFirstChild().getNodeValue()); System.out.print("imgsrc: "); System.out.println(link.getElementsByTagName("imgsrc").item(0).getFirstChild().getNodeValue()); System.out.println(); } }catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * addCode * @param path */ public void addXmlCode(String imgsrc,String title,String url){ try { builder = factory.newDocumentBuilder(); Document doc=builder.parse(path); doc.normalize(); Text textseg; Element imag=doc.createElement("imags"); Element linkimgsrc=doc.createElement("imgsrc"); textseg=doc.createTextNode(imgsrc); linkimgsrc.appendChild(textseg); imag.appendChild(linkimgsrc); Element linktitle=doc.createElement("title"); textseg=doc.createTextNode(title); linktitle.appendChild(textseg); imag.appendChild(linktitle); Element linkurl=doc.createElement("url"); textseg=doc.createTextNode(url); linkurl.appendChild(textseg); imag.appendChild(linkurl); doc.getDocumentElement().appendChild(imag); TransformerFactory tFactory =TransformerFactory.newInstance(); Transformer transformer; transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new java.io.File(path)); transformer.transform(source, result); }catch(Exception e){ } } /** * delete xml code * @param path */ public void delXmlCode(){ try { builder = factory.newDocumentBuilder(); doc=builder.parse(path); doc.normalize(); NodeList imags =doc.getElementsByTagName("imags"); Element elink=(Element) imags.item(0); elink.removeChild(elink.getElementsByTagName("imgsrc").item(0)); elink.removeChild(elink.getElementsByTagName("title").item(0)); elink.removeChild(elink.getElementsByTagName("url").item(0)); doc.getFirstChild().removeChild(elink); TransformerFactory tFactory =TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(new java.io.File(path)); transformer.transform(source, result); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } }
2. XML-Teil
<?xml version="1.0" encoding="UTF-8" ?> <root> <imags> <imgsrc>images/ad-01.jpg</imgsrc> <title>胡志明市</title> <url>http://torchrelay.beijing2008.cn/cn/journey/hochiminhcity/</url> </imags> <imags> <imgsrc>images/ad-02.jpg</imgsrc> <title>香港2</title> <url>http://torchrelay.beijing2008.cn/cn/journey/hongkong/</url> </imags> </root>
3. Sehen Sie sich die richtige XML an Operation Die drei Methoden (Lesen, Schreiben, Löschen) und ihre Initialisierungsanweisungen sind alle gleich:
builder = factory.newDocumentBuilder(); Document doc=builder.parse(path); doc.normalize();Zuerst hatte ich vor, denselben Teil herauszunehmen und ihn in den Konstruktor zu schreiben, aber ich habe es herausgefunden Während des Tests wird immer ein Nullzeigerfehler gemeldet (es hat mich lange gestört); Der Builder ist kein Leseproblem, aber beim Schreiben oder Löschen wird ein Fehler gemeldet. Es fühlt sich jetzt etwas chaotisch an, aber mir ist keine gute Methode eingefallen Ich habe es zuerst hier gepostet. Es kann in Zukunft verwendet werden.
Weitere Java-bezogene Artikel zum Parsen von XML-Dateien, zum Hinzufügen von Knoten und zum Löschen von Zusammenfassungen finden Sie auf der chinesischen PHP-Website!