搜尋
首頁後端開發XML/RSS教程java Domj4讀取xml文件

java Domj4讀取xml文件

Feb 16, 2017 pm 03:40 PM

先概括,再以程式碼形式給出。


                   取得節點:

   Element.nodeIterator();  //取得目前標籤節點下的所有子節點

 

                          Element Document.getRootElement();  //取得xml文檔的根標      

                                           IteratorElement.elementIterator("標籤名稱");// 指定名稱的所有子標籤

List  Element.elements(); //取得所有子標籤

                             取得屬性:

                                         Attribute   Element.attribute( "屬性名稱");//取得指定名稱的屬性物件

                                                     而ibute.getValue()       List     Element.attributes(); //取得所有屬性物件.建議使用方案。

                         Iterator                   取得文字:

                                               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);
		
	}
	
	
}

 以上就是中文 Domj4讀取文件的內容,更多相關內容內容請追蹤www.php.cn)!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
XML在RSS中的作用:聯合內容的基礎XML在RSS中的作用:聯合內容的基礎Apr 12, 2025 am 12:17 AM

XML在RSS中的核心作用是提供一種標準化和靈活的數據格式。 1.XML的結構和標記語言特性使其適合數據交換和存儲。 2.RSS利用XML創建標準化格式,方便內容共享。 3.XML在RSS中的應用包括定義feed內容的元素,如標題和發布日期。 4.優勢包括標準化和可擴展性,挑戰包括文件冗長和嚴格語法要求。 5.最佳實踐包括驗證XML有效性、保持簡潔、使用CDATA和定期更新。

從XML到可讀的內容:揭開RSS feed的神秘面紗從XML到可讀的內容:揭開RSS feed的神秘面紗Apr 11, 2025 am 12:03 AM

rssfeedsarexmldocuments usedforcontentAggregation and distribution.totransformthemintoreadableContent:1)parsethethexmlusinglibrarieslibrariesliblarieslikeparserinparserinpython.2)andledifferentifferentrssssssssssssssssssssssssssssssssssssssssssssssersions andpotentionparsingrorS.3)

是否有基於JSON的RSS替代方案?是否有基於JSON的RSS替代方案?Apr 10, 2025 am 09:31 AM

JSONFeed是一種基於JSON的RSS替代方案,其優勢在於簡潔性和易用性。 1)JSONFeed使用JSON格式,易於生成和解析。 2)它支持動態生成,適用於現代Web開發。 3)使用JSONFeed可以提升內容管理效率和用戶體驗。

RSS文檔工具:構建,驗證和發布提要RSS文檔工具:構建,驗證和發布提要Apr 09, 2025 am 12:10 AM

如何構建、驗證和發布RSSfeeds? 1.構建:使用Python腳本生成RSSfeed,包含標題、鏈接、描述和發布日期。 2.驗證:使用FeedValidator.org或Python腳本檢查RSSfeed是否符合RSS2.0標準。 3.發布:將RSS文件上傳到服務器,或使用Flask動態生成並發布RSSfeed。通過這些步驟,你可以有效管理和分享內容。

確保您的XML/RSS提要:全面的安全清單確保您的XML/RSS提要:全面的安全清單Apr 08, 2025 am 12:06 AM

確保XML/RSSfeeds安全性的方法包括:1.數據驗證,2.加密傳輸,3.訪問控制,4.日誌和監控。這些措施通過網絡安全協議、數據加密算法和訪問控制機制來保護數據的完整性和機密性。

XML/RSS面試問題和答案:提高您的專業知識XML/RSS面試問題和答案:提高您的專業知識Apr 07, 2025 am 12:19 AM

XML是一種標記語言,用於存儲和傳輸數據,RSS是一種基於XML的格式,用於發布頻繁更新的內容。 1)XML通過標籤和屬性描述數據結構,2)RSS定義特定標籤發布和訂閱內容,3)使用Python的xml.etree.ElementTree模塊可以創建和解析XML,4)XPath表達式可查詢XML節點,5)feedparser庫可解析RSSfeed,6)常見錯誤包括標籤不匹配和編碼問題,可用xmllint驗證,7)使用SAX解析器處理大型XML文件可優化性能。

高級XML/RSS教程:ACE您的下一次技術採訪高級XML/RSS教程:ACE您的下一次技術採訪Apr 06, 2025 am 12:12 AM

XML是一種用於數據存儲和交換的標記語言,RSS是基於XML的格式,用於發布更新內容。 1.XML定義數據結構,適合數據交換和存儲。 2.RSS用於內容訂閱,解析時使用專門庫。 3.解析XML可使用DOM或SAX,生成XML和RSS需正確設置元素和屬性。

從XML/RSS到JSON:現代數據轉換策略從XML/RSS到JSON:現代數據轉換策略Apr 05, 2025 am 12:08 AM

使用Python可以從XML/RSS轉換到JSON。 1)解析源數據,2)提取字段,3)轉換為JSON,4)輸出JSON。使用xml.etree.ElementTree和feedparser庫解析XML/RSS,使用json庫生成JSON數據。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前By尊渡假赌尊渡假赌尊渡假赌

熱工具

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

MantisBT

MantisBT

Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器