Java java지도 시간 dom4j를 사용하여 XML 문서 예제 구문 분석

dom4j를 사용하여 XML 문서 예제 구문 분석

May 29, 2018 pm 05:57 PM
강하게 하다 베이스


.



使用dom4j解析xml文档
*  1.SAXReader对象(dom4j核心类)
a) read(…) 加载执行xml文档
2. Document对象
a) Element e = getRootElement() 获得根元素
3. Element对象
a) Element [] eleArr = elements(…) 获得指定名称的所有子元素。可以不指定名称
b) element(…) 获得指定名称第一个子元素。可以不指定名称
c) getName() 获得当前元素的元素名
d) attributeValue(…) 获得指定属性名的属性值
e) elementText(…) 获得指定名称子元素的文本值
f) getText() 获得当前元素的文本内容
 操作步骤:
  1.创建dom4j核心对象SAXReader
  2.使用SAXReader中read方法读取xml文档,生成Document对象
  3.使用Document中方法getRootElement获取根元素Element
  4.使用Element中的方法elements获取所有bean元素
  5.遍历包含bean元素的集合,获取每一个bean元素
  6.使用Element中的方法attributeValue获取bean元素上属性的值
  7.使用Element中的方法elements获取所有property元素
  8.遍历包含property元素的集合,获取每一个property元素
9.使用Element中的方法attributeValue获取property元素上属性的值
10.使用Element中的方法getText获取获取property元素上文本值

 1 public class UseDom4jParseXML { 
 2     public static void main(String[] args) throws Exception { 
 3         //1.创建dom4j核心对象SAXReader 
 4         SAXReader sax = new SAXReader(); 
 5         //2.使用SAXReader中read方法读取xml文档,生成Document对象 
 6         Document docu = sax.read("bean.xml"); 
 7         //3.使用Document中方法getRootElement获取根元素Element 
 8         Element rootElement = docu.getRootElement(); 
 9         //4.使用Element中的方法elements获取所有bean元素
 10         List<Element> beanElementList = rootElement.elements();
 11         //5.遍历包含bean元素的集合,获取每一个bean元素
 12         for (Element beanElement : beanElementList) {
 13             String beanName = beanElement.getName();
 14             System.out.println(beanName);
 15             //6.使用Element中的方法attributeValue获取bean元素上属性的值
 16             String idValue = beanElement.attributeValue("id");
 17             System.out.println("\tbean元素的属性id:"+idValue);
 18             String classNameValue = beanElement.attributeValue("className");
 19             System.out.println("\tbean元素的属性className:"+classNameValue);
 20             //7.使用Element中的方法elements获取所有property元素
 21             List<Element> propertyElementList = beanElement.elements();
 22             //8.遍历包含property元素的集合,获取每一个property元素
 23             for (Element propertyElement : propertyElementList) {
 24                 System.out.println("\t\t"+propertyElement.getName());
 25                 //9.使用Element中的方法attributeValue获取property元素上属性的值
 26                 String nameValue = propertyElement.attributeValue("name");
 27                 System.out.println("\t\t\tproperty元素的属性name:"+nameValue);
 28                 String valueValue = propertyElement.attributeValue("value");
 29                 System.out.println("\t\t\tproperty元素的属性value:"+valueValue);
 30                 //10.使用Element中的方法getText获取获取property元素上文本值
 31                 String text = propertyElement.getText();
 32                 System.out.println("\t\t\tproperty元素的文本:"+text);
 33             }
 34         }
 35     }
 36 }
로그인 후 복사

BeanUtils工具类
使用BeanUitls公共,给类中的成员变量注入(赋)值

 1 /*  
 2  * 创建MyBeanUtils工具类,增强populate方法  
 3  */  
 4 public class MyBeanUtils {  
 5     //把构造方法私有,不让外界通过创建对象的方式调用方法  
 6     private MyBeanUtils() {  
 7     }  
 8       
 9     /* 
 10      * 定义一个方法(让用户使用自己定义的populate方法不用处理异常) 
 11      *     1.参数传递JavaBean对象的Class文件对象 
 12      *     2.内部通过反射创建Javabean对象 
 13      *     3.调用BeanUtils工具类的方法populate 
 14      *     4.对populate方法的异常进行try...catch处理 
 15      *     5.把对象返回给用户 
 16      *     6.把参数Class对象增加一个泛型,让用户传递什么类型的JavaBean,就返回什么类型的JavaBean 
 17      * 
 18      * 定义含有泛型的方法:调用方法时确定数据类型 
 19      *         修饰符 <定义泛型> 返回值类型 方法名(参数<使用泛型>){ 
 20      *             方法体 
 21      *         } 
 22      * 
 23      * 
 24      * 方法的参数: 
 25      *         Class clazz 
 26      *         Map<String,String[]> properties 
 27      * 方法的返回值类型: 
 28      *         Object 
 29      */ 
 30     public static <E> E populate03(Class<E> clazz, Map<String,String[]> properties){ 
 31         try { 
 32             //2.内部通过反射创建Javabean对象 
 33             E obj = clazz.newInstance(); 
 34             //3.调用BeanUtils工具类的方法populate 
 35             BeanUtils.populate(obj, properties); 
 36             //5.把对象返回给用户 
 37             return obj; 
 38         } catch (Exception e) { 
 39             //4.对populate方法的异常进行try...catch处理
 40             e.printStackTrace(); 
 41             //把编译异常,转换为运行时异常,给成员变量注入值失败,让程序停止下来 
 42             throw new RuntimeException("注入值失败"); 
 43         } 
 44     } 
 45      
 46     /* 
 47      * 定义一个方法(让用户使用自己定义的populate方法不用处理异常) 
 48      *     1.参数传递JavaBean对象的Class文件对象 
 49      *     2.内部通过反射创建Javabean对象 
 50      *     3.调用BeanUtils工具类的方法populate 
 51      *     4.对populate方法的异常进行try...catch处理 
 52      *     5.把对象返回给用户 
 53      * 
 54      * 方法的参数: 
 55      *         Class clazz 
 56      *         Map<String,String[]> properties 
 57      * 方法的返回值类型: 
 58      *         Object 
 59      */ 
 60     public static Object populate02(Class clazz, Map<String,String[]> properties){ 
 61         try { 
 62             //2.内部通过反射创建Javabean对象 
 63             Object obj = clazz.newInstance(); 
 64             //3.调用BeanUtils工具类的方法populate 
 65             BeanUtils.populate(obj, properties); 
 66             //5.把对象返回给用户 
 67             return obj; 
 68         } catch (Exception e) { 
 69             //4.对populate方法的异常进行try...catch处理 
 70             e.printStackTrace(); 
 71             //把编译异常,转换为运行时异常,给成员变量注入值失败,让程序停止下来 
 72             throw new RuntimeException("注入值失败"); 
 73         } 
 74          
 75     } 
 76      
 77     /* 
 78      * 定义一个方法(让用户使用自己定义的populate方法不用处理异常) 
 79      *     1.调用BeanUtils工具类的方法populate 
 80      *     2.对populate方法的异常进行try...catch处理 
 81      * 
 82      * 方法的参数: 
 83      *         Object bean 
 84      *         Map<String,String[]> properties 
 85      * 方法的返回值类型: 
 86      *         void 
 87      */ 
 88     public static void populate01(Object bean, Map<String,String[]> properties){ 
 89         try { 
 90             //1.调用BeanUtils工具类的方法populate 
 91             BeanUtils.populate(bean, properties); 
 92         } catch (Exception e) { 
 93             //2.对populate方法的异常进行try...catch处理 
 94             e.printStackTrace(); 
 95             //把编译异常,转换为运行时异常,给成员变量注入值失败,让程序停止下来 
 96             throw new RuntimeException("注入值失败"); 
 97         } 
 98     } 
 99 }
 100 package cn.itcast.dmeo03.MyBeanUtils;
 101 
 102 import java.util.HashMap;
 103 import java.util.Map;
 104 
 105 import org.junit.Test;
 106 
 107 import cn.itcast.dmeo01.bean.User;
 108 
 109 /*
 110  * 使用自定义工具类MyBeanUtils
 111  */
 112 public class UseMyBeanUtils {
 113     @Test
 114     public void demo03(){
 115         //创建Map集合,key是String类型,value是String类型的数组
 116         Map<String,String[]> properties = new HashMap<String,String[]>();
 117         properties.put("id", new String[]{"123"});
 118         properties.put("username", new String[]{"root","admin"});
 119         properties.put("password", new String[]{"root","123456"});
 120         properties.put("hobbies", new String[]{"吃","睡","玩","敲代码"});
 121         //调用MyBeanUtils工具类中的方法populate02
 122         User u = MyBeanUtils.populate03(User.class, properties);
 123         System.out.println(u);
 124     }
 125     
 126     @Test
 127     public void demo02(){
 128         //创建Map集合,key是String类型,value是String类型的数组
 129         Map<String,String[]> properties = new HashMap<String,String[]>();
 130         properties.put("id", new String[]{"123"});
 131         properties.put("username", new String[]{"root","admin"});
 132         properties.put("password", new String[]{"root","123456"});
 133         properties.put("hobbies", new String[]{"吃","睡","玩","敲代码"});
 134         //调用MyBeanUtils工具类中的方法populate02
 135         User u = (User) MyBeanUtils.populate02(User.class, properties);
 136         System.out.println(u);
 137     }
 138     
 139     @Test
 140     public void demo01(){
 141         //创建JavaBean对象
 142         User u = new User();
 143         //创建Map集合,key是String类型,value是String类型的数组
 144         Map<String,String[]> properties = new HashMap<String,String[]>();
 145         properties.put("id", new String[]{"123"});
 146         properties.put("username", new String[]{"root","admin"});
 147         properties.put("password", new String[]{"root","123456"});
 148         properties.put("hobbies", new String[]{"吃","睡","玩","敲代码"});
 149         //调用MyBeanUtils工具类中的方法populate01
 150         MyBeanUtils.populate01(u, properties);
 151         System.out.println(u);
 152     }
 153 }
로그인 후 복사
 1 /* 
 2  * 综合案例:XML+dom4j+反射+BeanUtils 
 3  *     1.使用xml存储JavaBean的全类名和属性名属性值 
 4  *     2.使用dom4j解析xml 
 5  *     3.使用反射技术根据解析出的全类名创建JavaBean对象 
 6  *     4.使用BeanUtils中的方法setProperty给成员变量注入值 
 7  */ 
 8 public class UseDom4jparseXMLToJavaBean { 
 9     public static void main(String[] args) throws Exception {
 10         //2.使用dom4j解析xml
 11         //获取dom4j的核心类SAXReader
 12         SAXReader sax = new SAXReader();
 13         //使用SAXReader中的read读取xml,创建Document对象
 14         Document docu = sax.read("src/cn/itcast/dmeo05/domain/data.xml");
 15         //使用Document中的方法getRootElement获取根元素
 16         Element rootElement = docu.getRootElement();
 17         //使用Element中的方法elements获取所有的bean元素,放入集合中
 18         List<Element> beanElementList = rootElement.elements();
 19         //遍历beanElementList集合
 20         for (Element beanElement : beanElementList) {
 21             //获取beanElement上的变的属性className
 22             String className = beanElement.attributeValue("className");
 23             //3.使用反射技术根据解析出的全类名创建JavaBean对象
 24             Class clazz = Class.forName(className);
 25             Object obj = clazz.newInstance();
 26             //使用Element中的方法elements获取所有的property元素,放入集合中
 27             List<Element> propertyElementList = beanElement.elements();
 28             //遍历propertyElementList集合
 29             for (Element propertyElement : propertyElementList) {
 30                 //获取propertyElement上的属性name(属性名)和value(属性值)
 31                 String name = propertyElement.attributeValue("name");
 32                 String value = propertyElement.attributeValue("value");
 33                 //4.使用BeanUtils中的方法setProperty给成员变量注入值
 34                 BeanUtils.setProperty(obj, name, value);
 35             }
 36             //打印JavaBean对象
 37             System.out.println(obj);
 38         }
 39     }
 40 
 41 }
로그인 후 복사

위 내용은 dom4j를 사용하여 XML 문서 예제 구문 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Win10의 마이크를 강화한 후 당겨지지 않으면 어떻게 해야 하나요? Win10의 마이크를 강화한 후 당겨지지 않으면 어떻게 해야 하나요? Jul 05, 2023 pm 06:13 PM

Win10 마이크를 끌어올릴 수 없으면 어떻게 해야 합니까? 많은 친구들이 컴퓨터를 사용할 때 마이크를 사용하는 경우가 많고, 일부 사용자는 마이크 강화를 준비할 때 마이크를 당기지 못하는 경우가 많습니다. 그렇다면 이런 상황이 발생하면 어떻게 해야 할까요? Win10 마이크를 강화한 후 끌어올릴 수 없는 문제에 대한 해결 방법을 편집기를 따라 살펴보겠습니다. Win10 마이크 향상에 대한 해결 방법을 풀 수 없습니다. 1. 드라이버 업데이트를 다시 시도할 수 있습니다. 2. WIN7 이상의 시스템에서는 오른쪽 하단의 작은 스피커에 있는 녹음 장치를 마우스 오른쪽 버튼으로 클릭하면 녹음 시 기존 마이크를 기본 장치로 설정할 수 있습니다. 그런 다음 마이크를 두 번 클릭하거나 레벨에서 속성을 클릭하여 마이크 볼륨 및 마이크 향상을 조정합니다(이는 적절하게 조정되며 볼륨을 높이는 데 도움이 됩니다).

PHP 기본 튜토리얼: 초보자부터 마스터까지 PHP 기본 튜토리얼: 초보자부터 마스터까지 Jun 18, 2023 am 09:43 AM

PHP는 웹 개발의 모든 작업을 처리할 수 있는 널리 사용되는 오픈 소스 서버 측 스크립팅 언어입니다. PHP는 웹 개발에 널리 사용되며, 특히 동적 데이터 처리에 뛰어난 성능을 발휘하여 많은 개발자들에게 사랑받고 사용되고 있습니다. 이 기사에서는 초보자가 시작부터 능숙해질 수 있도록 PHP의 기본 사항을 단계별로 설명합니다. 1. 기본 구문 PHP는 코드가 HTML, CSS 및 JavaScript와 유사한 해석 언어입니다. 모든 PHP 문은 세미콜론으로 끝납니다.

Go 언어 변수의 기본 사항을 알아보세요. Go 언어 변수의 기본 사항을 알아보세요. Mar 22, 2024 pm 09:39 PM

Go 언어는 Google이 개발한 정적으로 유형이 지정되고 컴파일되는 언어로, 간결하고 효율적인 기능으로 인해 개발자들의 광범위한 관심과 사랑을 받았습니다. Go 언어를 학습하는 과정에서 변수에 대한 기본 지식을 익히는 것은 중요한 단계입니다. 이 글에서는 Go 언어의 변수 정의, 할당, 유형 추론 등의 기본 지식을 구체적인 코드 예제를 통해 설명하여 독자가 이러한 지식 포인트를 더 잘 이해하고 숙달할 수 있도록 돕습니다. Go 언어에서는 var 키워드를 사용하여 var 변수 이름 변수 유형의 형식인 변수를 정의할 수 있습니다.

PHP 기본 소개: 에코 함수를 사용하여 텍스트 내용을 출력하는 방법 PHP 기본 소개: 에코 함수를 사용하여 텍스트 내용을 출력하는 방법 Jul 30, 2023 pm 05:38 PM

PHP 기본 소개: 에코 함수를 사용하여 텍스트 내용을 출력하는 방법 PHP 프로그래밍에서는 일부 텍스트 내용을 웹 페이지에 출력해야 하는 경우가 많습니다. 이 기사에서는 echo 함수를 사용하여 텍스트 콘텐츠를 출력하는 방법을 소개하고 일부 샘플 코드를 제공합니다. 시작하기 전에 먼저 PHP를 설치하고 실행 환경을 구성했는지 확인하세요. 아직 PHP가 설치되지 않은 경우, PHP 공식 홈페이지(https://www.php.net)에서 최신 안정 버전을 다운로드 받으실 수 있습니다.

Linux를 처음부터 배울 수 있나요? 무엇을 배워야 합니까? Linux를 처음부터 배울 수 있나요? 무엇을 배워야 합니까? Feb 19, 2024 pm 12:57 PM

IT업계에 취업하고 싶지만 프로그래밍을 배우고 싶다면 어떤 기술을 선택해야 할까요? 당연히 리눅스 운영과 유지보수겠죠? Linux는 광범위한 응용 프로그램과 좋은 고용 전망을 제공하여 시장에서 매우 인기 있는 기술이며 많은 사람들이 선호합니다. 그렇다면 질문은, 기본 지식 없이도 리눅스 운영과 유지 관리를 배울 수 있느냐는 것입니다. 서버 시장에서 리눅스 시스템은 안정성, 보안성, 무료 오픈 소스, 효율성, 편의성 등의 장점으로 인해 최대 80%의 시장 점유율을 차지하고 있습니다. . 이것으로부터 Linux 애플리케이션이 매우 널리 사용된다는 것을 알 수 있습니다. 지금이든 미래이든 Linux를 배우는 것은 매우 좋은 선택입니다. 처음부터 배울 수 있는지에 대해서는 당연히 내 대답은 다음과 같습니다. 올드보이 교육 리눅스 대면 수업은 기초 지식이 전혀 없는 사람들을 위해 특별히 고안되었습니다.

C언어의 기능에 대한 상세한 설명 : 기초부터 고급까지, 기능의 활용에 대한 종합적인 분석 C언어의 기능에 대한 상세한 설명 : 기초부터 고급까지, 기능의 활용에 대한 종합적인 분석 Feb 18, 2024 pm 02:25 PM

C 언어 함수 백과사전: 기본부터 고급까지, 함수 사용 방법에 대한 자세한 설명, 구체적인 코드 예제가 필요합니다. 소개: C 언어는 널리 사용되는 프로그래밍 언어이며 강력한 기능과 유연성으로 인해 많은 개발자가 첫 번째로 선택합니다. C 언어에서 함수는 코드 조각을 독립적인 모듈로 결합하여 코드의 재사용성과 유지 관리성을 향상시키는 중요한 개념입니다. 이 글에서는 C 언어 함수의 사용법을 기초부터 소개하고 점차적으로 발전시켜 독자들이 함수 작성 기술을 익히는 데 도움을 줄 것입니다. 1. C에서 함수 정의 및 호출

지금 Microsoft로부터 무료 Basic C# 인증을 받을 수 있는 기회를 놓치지 마세요. 지금 Microsoft로부터 무료 Basic C# 인증을 받을 수 있는 기회를 놓치지 마세요. Sep 01, 2023 pm 12:45 PM

모든 C# 개발자에게 전화하세요! Microsoft와 비영리 단체인 freeCodeCamp는 새로운 글로벌 무료 Basic C# 인증 출시를 발표했습니다. 이 인증은 모든 수준의 개발자가 다양한 응용 프로그램을 만드는 데 사용되는 널리 사용되는 프로그래밍 언어인 C#의 기본 사항을 배울 수 있도록 고안되었으며 이를 LinkedIn 프로필에 표시할 수 있습니다. 이 인증에는 35시간의 Microsoft Learn 교육 과정과 freeCodeCamp에서 호스팅되는 80개의 질문으로 구성된 시험이 포함되어 있습니다. 이 과정에서는 변수, 데이터 유형, 제어 구조 및 객체 지향 프로그래밍과 같은 주제를 다룹니다. “우리의 Basic C# 인증은 바로 이러한 다재다능한 기능을 마스터할 수 있는 능력을 증명하는 것입니다.

PHP 함수 사용법: 기초부터 고급까지 PHP 함수 사용법: 기초부터 고급까지 Jun 15, 2023 pm 11:11 PM

PHP는 동적 웹사이트, 웹 애플리케이션 및 기타 인터넷 서비스를 개발하는 데 널리 사용되는 서버측 스크립팅 언어입니다. PHP 애플리케이션을 개발하는 과정에서 함수를 사용하면 코드를 단순화하고 코드 재사용성을 향상시키며 개발 비용을 줄이는 데 도움이 될 수 있습니다. 이 글에서는 PHP 함수의 기본 사용법과 고급 사용법을 소개합니다. 1. PHP 함수의 기본 사용법 1. 함수 정의 PHP에서는 function 키워드를 사용하여 함수를 정의합니다. 예: functiongreet($name){

See all articles