使用dom4j解析xml文档实例
.
使用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 }Atas ialah kandungan terperinci 使用dom4j解析xml文档实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Alat AI Hot
Undress AI Tool
Gambar buka pakaian secara percuma
Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik
AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.
Clothoff.io
Penyingkiran pakaian AI
Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!
Artikel Panas
Alat panas
Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma
SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan
Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa
Dreamweaver CS6
Alat pembangunan web visual
SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)
Topik panas
Tutorial Asas PHP: Dari Pemula hingga Master
Jun 18, 2023 am 09:43 AM
PHP ialah bahasa skrip sebelah pelayan sumber terbuka yang digunakan secara meluas yang boleh mengendalikan semua tugas dalam pembangunan web. PHP digunakan secara meluas dalam pembangunan web, terutamanya untuk prestasi cemerlangnya dalam pemprosesan data dinamik, jadi ia disukai dan digunakan oleh ramai pembangun. Dalam artikel ini, kami akan menerangkan asas PHP langkah demi langkah untuk membantu pemula daripada mula menjadi mahir. 1. Sintaks asas PHP ialah bahasa yang ditafsirkan yang kodnya serupa dengan HTML, CSS dan JavaScript. Setiap penyata PHP berakhir dengan koma bertitik;
Apakah yang perlu saya lakukan jika mikrofon dalam Win10 tidak boleh ditarik selepas dikuatkan?
Jul 05, 2023 pm 06:13 PM
Apakah yang perlu saya lakukan jika mikrofon Win10 tidak boleh ditarik ke atas? Ramai rakan sering menggunakan mikrofon apabila menggunakan komputer, dan sesetengah pengguna sering gagal menarik mikrofon apabila bersiap untuk menguatkan mikrofon Jadi apa yang perlu kita lakukan apabila kita menghadapi situasi ini? Mari ikuti editor untuk melihat penyelesaian kepada masalah bahawa mikrofon Win10 tidak boleh ditarik ke atas selepas diperkukuh. Penyelesaian untuk Peningkatan Mikrofon Win10 Tidak Dapat Ditarik: 1. Anda boleh cuba mengemas kini pemacu sekali lagi. 2. Untuk sistem di atas WIN7, klik kanan peranti rakaman pada pembesar suara kecil di penjuru kanan sebelah bawah untuk menetapkan mikrofon sedia ada sebagai peranti lalai semasa rakaman. Kemudian klik dua kali mikrofon atau klik Properties dalam tahap untuk melaraskan kelantangan mikrofon dan peningkatan mikrofon (ini dilaraskan dengan sewajarnya, dan ia akan membantu untuk meningkatkan kelantangan
Pengenalan kepada Asas PHP: Cara menggunakan fungsi gema untuk mengeluarkan kandungan teks
Jul 30, 2023 pm 05:38 PM
Pengenalan asas kepada PHP: Cara menggunakan fungsi gema untuk mengeluarkan kandungan teks Dalam pengaturcaraan PHP, anda selalunya perlu mengeluarkan beberapa kandungan teks ke halaman web Dalam kes ini, anda boleh menggunakan fungsi gema. Artikel ini akan memperkenalkan cara menggunakan fungsi gema untuk mengeluarkan kandungan teks dan menyediakan beberapa kod sampel. Sebelum memulakan, pastikan anda telah memasang PHP dan mengkonfigurasi persekitaran berjalan. Jika PHP belum dipasang, anda boleh memuat turun versi stabil terkini dari laman web rasmi PHP (https://www.php.net).
Penjelasan terperinci tentang fungsi bahasa C: analisis asas kepada lanjutan yang komprehensif tentang penggunaan fungsi
Feb 18, 2024 pm 02:25 PM
Ensiklopedia fungsi bahasa C: daripada asas kepada lanjutan, penerangan terperinci tentang cara menggunakan fungsi, contoh kod khusus diperlukan Pengenalan: Bahasa C ialah bahasa pengaturcaraan yang digunakan secara meluas, dan fungsi dan fleksibilitinya yang berkuasa menjadikannya pilihan pertama banyak pembangun. Dalam bahasa C, fungsi ialah konsep penting Ia boleh menggabungkan sekeping kod ke dalam modul bebas, meningkatkan kebolehgunaan semula dan kebolehselenggaraan kod. Artikel ini akan memperkenalkan penggunaan fungsi bahasa C dari asas dan secara beransur-ansur maju untuk membantu pembaca menguasai kemahiran menulis fungsi. 1. Definisi dan panggilan fungsi dalam C
Ketahui asas pembolehubah bahasa Go
Mar 22, 2024 pm 09:39 PM
Bahasa Go ialah bahasa yang disusun secara statik yang dibangunkan oleh Google Cirinya yang ringkas dan cekap telah menarik perhatian dan kasih sayang yang meluas daripada pembangun. Dalam proses pembelajaran bahasa Go, menguasai pengetahuan asas pembolehubah adalah langkah yang penting. Artikel ini akan menerangkan pengetahuan asas seperti definisi, tugasan dan inferens jenis pembolehubah dalam bahasa Go melalui contoh kod khusus untuk membantu pembaca lebih memahami dan menguasai mata pengetahuan ini. Dalam bahasa Go, anda boleh menggunakan kata kunci var untuk menentukan pembolehubah, iaitu format nama pembolehubah var dan jenis pembolehubah.
Bolehkah saya belajar Linux dari awal Apakah yang perlu saya pelajari?
Feb 19, 2024 pm 12:57 PM
Jika anda ingin bekerja dalam industri IT, tetapi adakah anda ingin belajar pengaturcaraan, teknologi mana yang harus anda pilih? Sudah tentu ia adalah operasi dan penyelenggaraan Linux. Linux ialah teknologi yang sangat popular di pasaran, dengan pelbagai aplikasi dan prospek pekerjaan yang baik, dan disukai oleh ramai orang. Jadi persoalannya, bolehkah saya mempelajari operasi dan penyelenggaraan Linux dengan pengetahuan asas sifar Dalam pasaran pelayan, sistem Linux mempunyai bahagian pasaran sehingga 80% kerana kelebihannya seperti kestabilan, keselamatan, sumber terbuka percuma, kecekapan dan kemudahan? . Daripada ini, dapat dilihat bahawa aplikasi Linux sangat popular. Sama ada sekarang atau pada masa hadapan, mempelajari Linux adalah pilihan yang sangat baik. Sama ada boleh belajar dari awal? Kelas bersemuka Oldboy Education Linux direka khas untuk orang yang tidak mempunyai pengetahuan asas
Nota kajian PHP: Asas pengaturcaraan berorientasikan objek
Oct 09, 2023 pm 12:46 PM
Nota kajian PHP: Asas pengaturcaraan berorientasikan objek, contoh kod khusus diperlukan Pengenalan: Pengaturcaraan Berorientasikan Objek (pendek kata OOP) ialah cara pemikiran pengaturcaraan yang menguraikan masalah kepada berbilang objek dan mentakrifkan interaksi antara objek untuk menyelesaikan kompleks masalah pengaturcaraan. Sebagai bahasa pengaturcaraan yang berkuasa, PHP juga menyokong pengaturcaraan berorientasikan objek. Artikel ini akan memperkenalkan konsep asas dan sintaks biasa pengaturcaraan berorientasikan objek dalam PHP, dan menyediakan contoh kod khusus. baik hati
Penggunaan fungsi PHP: daripada asas kepada lanjutan
Jun 15, 2023 pm 11:11 PM
PHP ialah bahasa skrip bahagian pelayan yang digunakan secara meluas untuk membangunkan laman web dinamik, aplikasi web dan perkhidmatan Internet yang lain. Dalam proses membangunkan aplikasi PHP, menggunakan fungsi boleh membantu memudahkan kod, meningkatkan kebolehgunaan semula kod dan mengurangkan kos pembangunan. Artikel ini akan memperkenalkan penggunaan asas dan penggunaan lanjutan fungsi PHP. 1. Penggunaan asas fungsi PHP 1. Tentukan fungsi Dalam PHP, gunakan kata kunci fungsi untuk mentakrifkan fungsi, contohnya: functiongreet($name){


