您好,登錄后才能下訂單哦!
java Domj4讀取xml文件的方法?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
獲取節點:
Iterator Element.nodeIterator(); //獲取當前標簽節點下的所有子節點
獲取 標簽:
Element Document.getRootElement(); //獲取xml文檔的根標簽
Element ELement.element("標簽名") //指定名稱的第一個子標簽
Iterator<Element>Element.elementIterator("標簽名");// 指定名稱的所有子標簽
List<Element> Element.elements(); //獲取所有子標簽
獲取屬性:
String Element.attributeValue("屬性名") //獲取指定名稱的屬性值
Attribute Element.attribute("屬性名");//獲取指定名稱的屬性對象
Attribute.getName() //獲取屬性名稱
Attibute.getValue() //獲取屬性值
List<Attribute> Element.attributes(); //獲取所有屬性對象.推薦使用方案。
Iterator<Attribute> Element.attibuteIterator(); //獲取所有屬性對象
獲取文本:
Element.getText(); //獲取當前標簽的文本
Element.elementText("標簽名")//獲取當前標簽的指定名稱的子標簽的文本內容
案例:
import java.io.File; import java.util.Iterator; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.Node; import org.dom4j.io.SAXReader; import org.junit.Test; /** * 第二個dom4j讀取xml文件內容 * 節點 * 標簽 * 屬性 * 文本 * @author APPle * */ public class Demo2 { /** * 得到節點信息 */ @Test public void test1() throws Exception{ //1.讀取xml文檔,返回Document對象 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); //2.nodeIterator: 得到當前節點下的所有子節點對象(【不包含孫以下的節點】) Iterator<Node> it = doc.nodeIterator();//返回的是一個迭代器對象,迭代器里面存放的就是Node,給出泛型為Node while(it.hasNext()){//判斷是否有下一個元素 Node node = it.next();//取出元素 String name = node.getName();//得到節點名稱 //System.out.println(name); //System.out.println(node.getClass()); //繼續取出其下面的子節點 //只有【標簽節點】才有子節點 //判斷當前節點是否是標簽節點 if(node instanceof Element){ Element elem = (Element)node;//node是Node類型的,因此要向下轉型 Iterator<Node> it2 = elem.nodeIterator(); while(it2.hasNext()){ Node n2 = it2.next(); System.out.println(n2.getName()); } } } } /** * 遍歷xml文檔的所有節點 * @throws Exception */ @Test public void test2() throws Exception{ //1.讀取xml文檔,返回Document對象 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); //得到根標簽。contactList Element rooElem = doc.getRootElement(); getChildNodes(rooElem); } /** * 獲取 傳入的標簽下的所有子節點。Element elem只有Element標簽才有子節點 * @param elem */ private void getChildNodes(Element elem){ System.out.println(elem.getName());//獲取到了根標簽的名稱 //得到子節點 Iterator<Node> it = elem.nodeIterator(); while(it.hasNext()){ Node node = it.next(); //1.判斷是否是標簽節點 if(node instanceof Element){ Element el = (Element)node; //遞歸 getChildNodes(el); } }; } /** * 獲取標簽 */ @Test public void test3() throws Exception{ //1.讀取xml文檔,返回Document對象 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); //2.得到根標簽 Element rootElem = doc.getRootElement(); //得到標簽名稱 String name = rootElem.getName(); System.out.println(name);//contactList //3.得到當前標簽下指定名稱的【第一個】【子】標簽 /*Element contactElem = rootElem.element("contact"); System.out.println(contactElem.getName());*/ //4.得到當前標簽下指定名稱的所有子標簽,指定了contact名稱,就得到這個名稱的所有同名的標簽 //這里制定了名稱,有局限性 /*Iterator<Element> it = rootElem.elementIterator("contact"); while(it.hasNext()){ Element elem = it.next(); System.out.println(elem.getName()); }*/ //5.得到當前rootElem標簽下的的所有子標簽對象,這里會拿出所有子標簽對象。推薦使用。 List<Element> list = rootElem.elements(); //遍歷List的方法 //1)傳統for循環 2)增強for循環 3)迭代器 /*for(int i=0;i<list.size();i++){ Element e = list.get(i); System.out.println(e.getName()); }*/ for(Element e:list){ System.out.println(e.getName()); } /* Iterator<Element> it = list.iterator(); //ctrl+2 松開 l while(it.hasNext()){ Element elem = it.next(); System.out.println(elem.getName()); }*/ //獲取更深層次的標簽(方法只能一層層地獲取) Element nameElem = doc.getRootElement(). element("contact").element("name"); System.out.println(nameElem.getName()); } /** * 獲取屬性 */ @Test public void test4() throws Exception{ //1.讀取xml文檔,返回Document對象 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); //獲取屬性:(先獲得屬性所在的標簽對象,然后才能獲取屬性) //1.得到標簽對象 Element contactElem = doc.getRootElement().element("contact"); //2.得到屬性 //2.1 得到指定名稱的屬性值 /* String idValue = contactElem.attributeValue("id"); System.out.println(idValue); */ //2.2 得到指定屬性名稱的屬性對象Attribute /*Attribute idAttr = contactElem.attribute("id"); //getName: 屬性名稱 getValue:屬性值 System.out.println(idAttr.getName() +"=" + idAttr.getValue());*/ //2.3 得到【所有】屬性對象,返回LIst集合。不需要知道屬性名稱和多少個屬性 /*List<Attribute> list = contactElem.attributes();//推薦使用方案 //遍歷屬性 for (Attribute attr : list) { System.out.println(attr.getName()+"="+attr.getValue()); }*/ //2.4 得到【所有屬性】對象,返回迭代器 Iterator<Attribute> it = contactElem.attributeIterator(); while(it.hasNext()){ Attribute attr = it.next(); System.out.println(attr.getName()+"="+attr.getValue()); } } /** * 獲取文本 */ @Test public void test5() throws Exception{ //1.讀取xml文檔,返回Document對象 SAXReader reader = new SAXReader(); Document doc = reader.read(new File("./src/contact.xml")); /** * 注意: 空格和換行也是xml的內容 */ String content = doc.getRootElement().getText(); System.out.println(content); //獲取文本(先獲取標簽對象,再獲取標簽上的文本) Element nameELem = doc.getRootElement().element("contact").element("name"); //1. 得到文本 String text = nameELem.getText(); System.out.println(text); //2. 得到指定子標簽名的文本內容 String text2 = doc.getRootElement().element("contact").elementText("phone"); System.out.println(text2); } }
感謝各位的閱讀!看完上述內容,你們對java Domj4讀取xml文件的方法大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。