백엔드 개발 XML/RSS 튜토리얼 java Domj4가 xml 파일을 읽습니다.

java Domj4가 xml 파일을 읽습니다.

Feb 16, 2017 pm 03:40 PM

먼저 요약한 뒤 코드 형태로 전달하세요.


노드 가져오기:

Iterator Element.nodeIterator() // 현재 레이블 노드 아래의 모든 하위 노드 가져오기

태그 가져오기:

Element Document.getRootElement(); //xml 문서의 루트 태그 가져오기

Element ELement.element("태그 이름") //지정 첫 번째 A 하위 태그

                                                                                         > Element.elements(); // 모든 하위 태그 가져오기

                                    tributeValue("속성 이름") //지정된 이름의 속성 값 가져오기

Attribute Element.attribute("속성 이름"); //지정된 이름의 속성 개체 가져오기

                       Attibute.getValue() //속성 값 가져오기

            목록< ;속성>

Iterator Element.attibuteIterator(); //모든 속성 개체 가져오기

텍스트 가져오기:

                                                                                                       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 파일을 읽는 내용이며, 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php. CN)!


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

XML에서 속성 값을 수정하는 제한 사항은 얼마입니까? XML에서 속성 값을 수정하는 제한 사항은 얼마입니까? Mar 03, 2025 pm 05:32 PM

이 기사는 XML 속성 값을 수정하고, 잘 형성, 스키마/DTD 검증 및 문자 인코딩에서 비롯된 제한을 강조합니다. 부적절한 탈출 및 데이터 유형 불일치와 같은 함정을 강조하고 Sicurit을 해결합니다.

뉴스 집계 및 콘텐츠 큐 레이션에 RSS 피드를 사용하는 방법은 무엇입니까? 뉴스 집계 및 콘텐츠 큐 레이션에 RSS 피드를 사용하는 방법은 무엇입니까? Mar 10, 2025 pm 03:47 PM

이 기사는 효율적인 뉴스 집계 및 콘텐츠 큐 레이션을 위해 RSS 피드를 사용하는 방법을 설명합니다. RSS 리더 (Feedly 및 Inoreader와 같은)를 사용하여 피드에 가입하고, 피드를 구성하고, 대상 콘텐츠에 대한 기능을 활용하는 것에 대해 자세히 설명합니다. Bene

XML 수정이 성능에 영향을 미칩니 까? XML 수정이 성능에 영향을 미칩니 까? Mar 03, 2025 pm 05:27 PM

XML 컨텐츠 수정은 특히 큰 파일의 응용 프로그램 성능에 큰 영향을 미칩니다. 구문 분석, DOM 조작, 직렬화 및 I/O 운영이 이에 기여합니다. 최적화 전략에는 스트리밍 파서 사용, 최소화 d가 포함됩니다. d

큰 XML 파일을 수정하는 방법 큰 XML 파일을 수정하는 방법 Mar 03, 2025 pm 05:31 PM

이 기사는 효율적인 대규모 XML 파일 수정을 해결합니다. 그것은 메모리 내 처리의 비 효율성을 강조하여 색소폰 및 스테세스 구문 분석과 같은 스트리밍 접근법을 옹호합니다. 최적화 전략에는 증분 구문 분석, 최적화 된 데이터 S가 포함됩니다

RSS를 사용하여 컨텐츠 신디케이션을 구현하려면 어떻게해야합니까? RSS를 사용하여 컨텐츠 신디케이션을 구현하려면 어떻게해야합니까? Mar 10, 2025 pm 03:41 PM

이 기사는 RSS 피드를 사용하여 컨텐츠 신디케이트 구현에 대해 자세히 설명합니다. RSS 피드 생성, 대상 웹 사이트 식별, 피드 제출 및 모니터링 효과가 포함됩니다. 제한된 제어 및 풍부한 미디어 지원과 같은 과제도 원반입니다.

XML 컨텐츠를 데이터로 변환하는 방법 XML 컨텐츠를 데이터로 변환하는 방법 Mar 03, 2025 pm 05:25 PM

이 기사는 XML 데이터 변환 방법을 자세히 설명합니다. XML 문서 내에서 데이터 형식 변환의 과제를 해결하여 XSLT 및 스트림 처리와 같은 효율적인 기술을 강조합니다. 이 기사는 또한 Sch와 같은 잠재적 인 함정을 다룹니다

웹 컨텐츠 관리에 Atom Publishing 프로토콜을 어떻게 사용합니까? 웹 컨텐츠 관리에 Atom Publishing 프로토콜을 어떻게 사용합니까? Mar 10, 2025 pm 05:48 PM

이 기사에서는 웹 컨텐츠 관리를위한 ATOM Publishing Protocol (ATOMPUB)을 설명합니다. 컨텐츠 생성, 검색, 업데이트 및 삭제를위한 Atom Format과 함께 HTTP 방법 (Get, Post, Put, Delete)을 사용하여 세부 정보를 제공합니다. 이 기사는 또한 Atompub에 대해 설명합니다

XML 및 시맨틱 웹 기술을 어떻게 통합 할 수 있습니까? XML 및 시맨틱 웹 기술을 어떻게 통합 할 수 있습니까? Mar 10, 2025 pm 05:50 PM

이 기사는 XML 및 시맨틱 웹 기술을 통합합니다. 핵심 문제는 시맨틱 상호 운용성을 위해 XML의 구조화 된 데이터를 RDF 트리플에 매핑하는 것입니다. 모범 사례에는 온톨로지 정의, 전략적 매핑 접근 방식, 신중한 ATT가 포함됩니다.

See all articles