Home Backend Development XML/RSS Tutorial java Domj4 reads xml file

java Domj4 reads xml file

Feb 16, 2017 pm 03:40 PM

First summarize, then give it in code form.


## Get node:

Iterator Element.nodeIterator(); //Get all child nodes under the current label node

Get the tag:

Element Document.getRootElement(); //Get the root tag of the xml document

Element ELement.element("tag name") //Specify the first element of the name A sub-tag

IteratorElement.elementIterator("tag name");//All sub-tags with the specified name

List Element.elements(); // Get all sub tags

# Attribute Element.attribute("Attribute name"); //Get the attribute object with the specified name

                                 Get attribute value

                                                                                                                                                                                                                                                                                          since List

                                                                                                                                                                                                                                                                                Since         Element.getText(); / / Get the text of the current label

                                                                                                                                                                               Element.elementText("tag name") // Get the text content of the sub-tag with the specified name of the current label

Case:

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

The above is the content of java Domj4 reading xml file. For more related content, please pay attention to the PHP Chinese website (m.sbmmt.com)!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undress AI Tool

Undress AI Tool

Undress images for free

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Hot Topics

PHP Tutorial
1596
276
The Complete Guide to Creating a Podcast RSS Feed with iTunes Tags The Complete Guide to Creating a Podcast RSS Feed with iTunes Tags Aug 11, 2025 pm 02:09 PM

Creating a podcast containing the correct iTunes tags RSSfeed is the key to ensuring that the program can be discovered and displayed correctly on platforms such as ApplePodcasts; 2. RSSfeed must comply with the RSS2.0 specification and include specific iTunes tags, such as,,, and; 3. The xmlns:itunes namespace must be added to the tags, and metadata must be set correctly at the channel level and each episode level; 4. Use Buzzprout, Captivate, Podbean and other hosting platforms to automatically generate compliant feeds to avoid manual XML errors; 5. Before submission, you need to use verification tools to check the validity of the feed, ensure that the audio file is in MP3 format and use absolute URLs.

Using XSLT Parameters to Create Dynamic Transformations Using XSLT Parameters to Create Dynamic Transformations Aug 17, 2025 am 09:16 AM

XSLT parameters are a key mechanism for dynamic conversion through external passing values. 1. Use declared parameters and set default values; 2. Pass the actual value from application code (such as C#) through interfaces such as XsltArgumentList; 3. Control conditional processing, localization, data filtering or output format through $paramName reference parameters in the template; 4. Best practices include using meaningful names, providing default values, grouping related parameters, and performing value verification. The rational use of parameters can make XSLT style sheets highly reusable and maintainable, and the same style sheets can produce diversified output results based on different inputs.

Displaying RSS feed items with images and media enclosures Displaying RSS feed items with images and media enclosures Aug 01, 2025 am 12:33 AM

First, check the inline image in the description field of the RSS item, extract the img tag as the main image source by parsing HTML or CDATA content; 2. Secondly, find the media:thumbnail element in the MediaRSS extension, and give priority to using the thumbnail provided for preview display; 3. If the first two do not exist, check whether the MIME type of the enclosure tag is an image (such as image/jpeg) and use it as an alternative cover image; 4. For audio or video media, render the corresponding audio or video player according to the MIME type of enclosure (such as audio/mpeg or video/mp4); 5. When actually implementing it,

XML Serialization and Deserialization in .NET XML Serialization and Deserialization in .NET Aug 13, 2025 am 05:10 AM

XMLserializationin.NETconvertsobjectstoXMLformatusingXmlSerializer,anddeserializationreconstructsobjectsfromXML.1.UseXmlSerializertoserializepublicpropertiesandfields,asshownwiththePersonclass.2.DeserializebycallingDeserializemethodonXmlSerializer,pa

XML Data Binding with Castor in Java XML Data Binding with Castor in Java Aug 15, 2025 am 03:43 AM

CastorenablesXML-to-Javaobjectmappingviadefaultconventionsorexplicitmappingfiles;1)DefineJavaclasseswithgetters/setters;2)UseUnmarshallertoconvertXMLtoobjects;3)UseMarshallertoserializeobjectsbacktoXML;4)Forcomplexcases,configurefieldmappingsinmappin

Best practices for commenting and documenting XML files Best practices for commenting and documenting XML files Aug 17, 2025 am 01:52 AM

The clear answer is: Best practices for XML file annotations and documentation include using contextual comments, combining external documents, keeping comments updated, avoiding over-annotations, keeping comment styles consistent, adding units and scope descriptions to configuration values, and using CDATA if necessary. 1. Comments should explain the reasons behind the structure rather than just describe the content, such as explaining business rules or technical limitations; 2. Combining external documents such as XSD, DTD, or README to illustrate the overall structure, and refer to schema in the root element to support verification; 3. Comments are updated synchronously every time XML is modified to avoid legacy outdated information; 4. Add comments only in non-obvious places to avoid repeated explanations for obvious elements; 5. Teams unify comment location, format and keywords (such as TOD

The Anatomy of an RSS Feed: Essential Tags Explained The Anatomy of an RSS Feed: Essential Tags Explained Aug 07, 2025 am 12:46 AM

AnRSSfeedisstructuredusingstandardizedXMLtagstodelivercontentupdatesreliably.1.Thetagistherootcontainer,definingtheversion(e.g.,"2.0").2.Insideit,thetagactsasthemainhub,holdingmetadataandcontent.3.Coremetadataincludes,,,,,,,andoptional.4.Ea

Fetching and Parsing an RSS Feed in JavaScript Fetching and Parsing an RSS Feed in JavaScript Aug 04, 2025 am 03:08 AM

To solve the problem of getting and parsing RSSfeed in JavaScript, you must use a proxy to bypass CORS restrictions and parse XML with DOMParser. 1. Due to the cross-origin policy of the browser, it is impossible to directly obtain RSSfeed without CORS headers through fetch; 2. The solution is to use CORS proxy, and public proxy such as allorigins.win can be used during testing; 3. The production environment should use a self-built backend proxy to forward the request; 4. After obtaining XML text, use DOMParser to parse it into an XML document object; 5. Use querySelectorAll and querySelector to extract the title, link, and publish time in the item

See all articles