Maison développement back-end Tutoriel XML/RSS java Domj4 lit le fichier XML

java Domj4 lit le fichier XML

Feb 16, 2017 pm 03:40 PM

Résumé d'abord, puis donnez-le sous forme de code.


Get node:

Iterator Element.nodeIterator(); // Récupère tous les nœuds enfants sous le nœud d'étiquette actuel

Récupérer la balise :

Element Document.getRootElement(); //Récupérer la balise racine du document XML

                                                                                                                                                                                                                     ELement.element ("nom de la balise") // Spécifiez le première sous-balise A

                                                                                                        > Element.elements(); // Récupère toutes les sous-balises

                                           tributeValue("Nom de l'attribut") //Récupère la valeur de l'attribut du nom spécifié

Attribute Element.attribute("Attribute name"); //Obtient l'objet d'attribut avec le nom spécifié

                        Attibute.getValue() //Obtient la valeur de l'attribut

           Liste< Attribut>

Iterator<Attribute> Element.attibuteIterator(); //Obtenir tous les objets d'attribut

Obtenir le texte :

Element.getText(); / Récupérer le texte de la balise actuelle

                                                                                                                    Element.elementText("tag name") //           Récupère le contenu textuel de la sous-balise avec le nom spécifié de la balise actuelle

Cas :

Ce qui précède est le contenu du fichier XML de lecture Java Domj4. Pour plus de contenu connexe, veuillez faire attention. vers le site PHP chinois (www.php.cn) !

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(&quot;./src/contact.xml&quot;));
		
		//2.nodeIterator: 得到当前节点下的所有子节点对象(【不包含孙以下的节点】)
		Iterator&lt;Node&gt; 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&lt;Node&gt; 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(&quot;./src/contact.xml&quot;));
		
		//得到根标签。contactList
		Element rooElem = doc.getRootElement();
		
		getChildNodes(rooElem);

	}
	
	/**
	 * 获取 传入的标签下的所有子节点。Element elem只有Element标签才有子节点
	 * @param elem
	 */
	private void getChildNodes(Element elem){
		System.out.println(elem.getName());//获取到了根标签的名称
		
		//得到子节点
		Iterator&lt;Node&gt; 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(&quot;./src/contact.xml&quot;));
		
		//2.得到根标签
		Element  rootElem = doc.getRootElement();
		//得到标签名称
		String name = rootElem.getName();
		System.out.println(name);//contactList
		
		//3.得到当前标签下指定名称的【第一个】【子】标签
		
		/*Element contactElem = rootElem.element(&quot;contact&quot;);
		System.out.println(contactElem.getName());*/
		
		
		//4.得到当前标签下指定名称的所有子标签,指定了contact名称,就得到这个名称的所有同名的标签
		//这里制定了名称,有局限性
		/*Iterator&lt;Element&gt; it = rootElem.elementIterator(&quot;contact&quot;);
		while(it.hasNext()){
			Element elem = it.next();
			System.out.println(elem.getName());
		}*/
		
		
		//5.得到当前rootElem标签下的的所有子标签对象,这里会拿出所有子标签对象。推荐使用。
		List&lt;Element&gt; list = rootElem.elements();
		//遍历List的方法
		//1)传统for循环  2)增强for循环 3)迭代器
		/*for(int i=0;i&lt;list.size();i++){
			Element e = list.get(i);
			System.out.println(e.getName());
		}*/
		
		for(Element e:list){
			System.out.println(e.getName());
		}
		/*
		Iterator&lt;Element&gt; it = list.iterator(); //ctrl+2 松开 l
		while(it.hasNext()){
			Element elem = it.next();
			System.out.println(elem.getName());
		}*/
		
		//获取更深层次的标签(方法只能一层层地获取)
		Element nameElem = doc.getRootElement().
					element(&quot;contact&quot;).element(&quot;name&quot;);
		System.out.println(nameElem.getName());
		
	}
	
	/**
	 * 获取属性
	 */
	@Test
	public void test4() throws Exception{
		//1.读取xml文档,返回Document对象
		SAXReader reader = new SAXReader();
		Document doc = reader.read(new File(&quot;./src/contact.xml&quot;));
		
		//获取属性:(先获得属性所在的标签对象,然后才能获取属性)
		//1.得到标签对象
		Element contactElem = doc.getRootElement().element(&quot;contact&quot;);
		//2.得到属性
		//2.1  得到指定名称的属性值
		/*
		String idValue = contactElem.attributeValue(&quot;id&quot;);
		System.out.println(idValue);
		*/
		
		//2.2 得到指定属性名称的属性对象Attribute
		/*Attribute idAttr = contactElem.attribute(&quot;id&quot;);
		//getName: 属性名称    getValue:属性值
		System.out.println(idAttr.getName() +&quot;=&quot; + idAttr.getValue());*/
		
		//2.3 得到【所有】属性对象,返回LIst集合。不需要知道属性名称和多少个属性
		/*List&lt;Attribute&gt; list = contactElem.attributes();//推荐使用方案
		//遍历属性
		for (Attribute attr : list) {
			System.out.println(attr.getName()+&quot;=&quot;+attr.getValue());
		}*/
		
		//2.4 得到【所有属性】对象,返回迭代器
		Iterator&lt;Attribute&gt; it = contactElem.attributeIterator();
		while(it.hasNext()){
			Attribute attr = it.next();
			System.out.println(attr.getName()+&quot;=&quot;+attr.getValue());
		}
		
	}
	
	/**
	 * 获取文本
	 */
	@Test
	public void test5() throws Exception{
		//1.读取xml文档,返回Document对象
		SAXReader reader = new SAXReader();
					
		Document doc = reader.read(new File(&quot;./src/contact.xml&quot;));
		
		
		/**
		 * 注意: 空格和换行也是xml的内容
		 */
		String content = doc.getRootElement().getText();
		System.out.println(content);
		
		
		//获取文本(先获取标签对象,再获取标签上的文本)
		Element nameELem = 
			doc.getRootElement().element(&quot;contact&quot;).element(&quot;name&quot;);
		//1. 得到文本
		String text = nameELem.getText();
		System.out.println(text);
		
		//2. 得到指定子标签名的文本内容
		String text2 = 
			doc.getRootElement().element(&quot;contact&quot;).elementText(&quot;phone&quot;);
		System.out.println(text2);
		
	}
	
	
}
Copier après la connexion


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles sont les limites pour modifier les valeurs d'attribut dans XML Quelles sont les limites pour modifier les valeurs d'attribut dans XML Mar 03, 2025 pm 05:32 PM

Quelles sont les limites pour modifier les valeurs d'attribut dans XML

La modification XML affectera-t-elle les performances? La modification XML affectera-t-elle les performances? Mar 03, 2025 pm 05:27 PM

La modification XML affectera-t-elle les performances?

Comment modifier les grands fichiers XML Comment modifier les grands fichiers XML Mar 03, 2025 pm 05:31 PM

Comment modifier les grands fichiers XML

Comment utiliser les flux RSS pour l'agrégation de nouvelles et la conservation du contenu? Comment utiliser les flux RSS pour l'agrégation de nouvelles et la conservation du contenu? Mar 10, 2025 pm 03:47 PM

Comment utiliser les flux RSS pour l'agrégation de nouvelles et la conservation du contenu?

Comment puis-je intégrer des technologies XML et SEMANTIS Web? Comment puis-je intégrer des technologies XML et SEMANTIS Web? Mar 10, 2025 pm 05:50 PM

Comment puis-je intégrer des technologies XML et SEMANTIS Web?

Comment utiliser XML pour l'interopérabilité des données dans les soins de santé / finance / etc.? Comment utiliser XML pour l'interopérabilité des données dans les soins de santé / finance / etc.? Mar 10, 2025 pm 05:50 PM

Comment utiliser XML pour l'interopérabilité des données dans les soins de santé / finance / etc.?

Comment implémenter la syndication du contenu à l'aide de RSS? Comment implémenter la syndication du contenu à l'aide de RSS? Mar 10, 2025 pm 03:41 PM

Comment implémenter la syndication du contenu à l'aide de RSS?

Comment convertir le contenu XML en données Comment convertir le contenu XML en données Mar 03, 2025 pm 05:25 PM

Comment convertir le contenu XML en données

See all articles