java中XML操作:xml與string互轉、讀取XML文檔節點及對XML節點增刪改查


一、XML和String互轉:

  使用dom4j程式變得很簡單

//字符串轉XML
String xmlStr = \"......\"; 
Document document = DocumentHelper.parseText(xmlStr); // XML轉字符串 
Document document = ...; String text = document.asXML(); //這里的XML DOCUMENT為org.dom4j.Document 

二、讀取XML文檔節點:

package vastsum; import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; /** * 讀取下xml文檔,獲得document對象。 */
class exmple { public static void main(String[] args) throws DocumentException { SAXReader reader = new SAXReader(); Document document = reader.read(new File("./src/contact.xml")); /** * 節點對象的操作方法 */
        
        //獲取文檔根節點
        Element root = document.getRootElement(); //輸出根標簽的名字
        System.out.println(root.getName()); //獲取根節點下面的所有子節點(不包過子節點的子節點)
        List<Element> list = root.elements() ; //遍歷List的方法
        for (Element e:list){ System.out.println(e.getName()); } //獲得指定節點下面的子節點
        Element contactElem = root.element("contact");//首先要知道自己要操作的節點。 
        List<Element> contactList = contactElem.elements(); for (Element e:contactList){ System.out.println(e.getName()); } //調用下面獲取子節點的遞歸函數。
 getChildNodes(root); //獲得當前標簽下指定名稱的第一個子標簽
        Element conElem = root.element("contact"); System.out.println(conElem.getName()); //獲得更深層次的標簽(一層一層的獲取)
        Element nameElem = root.element("contact").element("name"); System.out.println(nameElem.getName()); } //遞歸查詢節點函數,輸出節點名稱
    private static void getChildNodes(Element elem){ System.out.println(elem.getName()); Iterator<Node> it = elem.nodeIterator(); while (it.hasNext()){ Node node = it.next(); if (node instanceof Element){ Element e1 = (Element)node; getChildNodes(e1); } } } }

三、對XML節點屬性進行增刪改查

package vastsum; import java.io.File; import java.io.FileWriter; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; import org.junit.Test; /** * 使用dom4j操作xml * 對xml屬性操作 * 操作xml文件為contact.xml * */
public class attrDemo{ @Test public void exmple() throws Exception{ //讀取XML文件,獲得document對象
        SAXReader reader = new SAXReader(); Document document = reader.read(new File("./src/contact.xml")); //獲得某個節點的屬性對象
        Element rootElem = document.getRootElement(); //獲取根節點屬性對象
        Attribute rootAttr = rootElem.attribute("id"); //獲取指定節點屬性對象
        Element contactElem = rootElem.element("contact"); Attribute contactAttr = contactElem.attribute("id"); //獲取指定對象的屬性名
        System.out.println(rootAttr.getName()); System.out.println(contactAttr.getName()); //獲取指定對象的屬性值
        System.out.println(contactAttr.getValue()); System.out.println(rootAttr.getValue()); //遍歷某個節點的所有屬性
        for (Iterator it = contactElem.attributeIterator();it.hasNext();){ Attribute conAttr= (Attribute)it.next(); String conTxt = conAttr.getValue(); String conAttrName = conAttr.getName(); System.out.println(conAttrName+" = "+conTxt); } //設置某節點的屬性和值
        contactElem.addAttribute("name", "zhangsan"); //設置(更改)某屬性的值
        Attribute nameAttr = contactElem.attribute("name"); nameAttr.setValue("lisi"); //刪除某節點的指定屬性
 contactElem.remove(nameAttr); //將某節點的屬性和值寫入xml文檔中
        XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml")); writer.write(document); writer.close(); //如果文檔中有中文需要設置字符編碼,用如下語句:
        OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); XMLWriter writer = new XMLWriter(new FileWriter("./src/contact.xml"),format); } }

下面介紹下dom4j:

  dom4j是Java的XML API,用來讀寫XML文件的。目前有很多場景中使用dom4j來讀寫xml的。

  要使用dom4j開發,需要下載導入dom4j相應的jar文件。官網下載:http://www.dom4j.org/dom4j-1.6.1/

  下載解壓之后如圖所示:

  我們只需要把dom4j-1.6.1.jar文件構建到我們開發項目中就可以了。

  在項目中創建一個lib文件,把dom4j-1.6.1.jar文件拷貝到lib中,然后右鍵dom4j-1.6.1jar文件。如圖所示:


  點擊Add to Bulid Path即可構建到項目中去了。導入成功如圖所示:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM