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 }
以上がdom4j を使用して XML ドキュメントを解析する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

Win10 マイクがプルアップできない場合はどうすればよいですか?多くの友人はコンピューターを使用するときにマイクを頻繁に使用しますが、一部のユーザーはマイクを強化する準備をするときに頻繁にマイクを抜くのに失敗します。 Win10のマイク強化後にプルアップできなくなった問題の解決策を編集者を追って見てみましょう。 Win10 のマイク拡張を取得できない場合の解決策: 1. ドライバーの更新を再度試みることができます。 2. WIN7 以降のシステムの場合、右下隅の小さなスピーカーにある録音デバイスを右クリックして、録音中に既存のマイクをデフォルトのデバイスとして設定します。次に、マイクをダブルクリックするか、レベル内の [プロパティ] をクリックして、マイクの音量とマイクの強調を調整します (これは適切に調整されており、音量を上げると便利です)。

PHP は、Web 開発のすべてのタスクを処理できる、広く使用されているオープン ソースのサーバー側スクリプト言語です。 PHP は Web 開発で広く使用されており、特に動的データ処理における優れたパフォーマンスのため、多くの開発者に愛され、使用されています。この記事では、初心者が入門から上級者になるまでをサポートするために、PHP の基本をステップごとに説明します。 1. 基本構文 PHP は、コードが HTML、CSS、および JavaScript に似ているインタープリター型言語です。すべての PHP ステートメントはセミコロンで終わります。

Go 言語は、Google によって開発された静的型付けのコンパイル言語であり、その簡潔で効率的な機能が開発者から広く注目され、愛されています。 Go 言語を学習するプロセスでは、変数の基本知識を習得することが重要なステップです。この記事では、Go 言語における変数の定義、代入、型推論などの基本的な知識を具体的なコード例を通じて説明し、読者がこれらの知識をより深く理解し習得できるようにします。 Go 言語では、キーワード var を使用して変数を定義できます。これは、var 変数名変数タイプの形式です。

PHP の基本入門: echo 関数を使用してテキスト コンテンツを出力する方法 PHP プログラミングでは、テキスト コンテンツを Web ページに出力する必要がよくあります。この場合、echo 関数を使用できます。この記事では、echo 関数を使用してテキストコンテンツを出力する方法といくつかのサンプルコードを紹介します。始める前に、まず PHP がインストールされ、実行環境が構成されていることを確認してください。 PHP がまだインストールされていない場合は、PHP 公式 Web サイト (https://www.php.net) から最新の安定バージョンをダウンロードできます。

IT業界で働きたいけどプログラミングを学びたいと思ったら、どのテクノロジーを選べばいいでしょうか?それはもちろんLinuxの運用保守です。 Linux は市場で非常に人気のあるテクノロジーであり、幅広い用途があり、雇用の可能性も高く、多くの人に好まれています。そこで質問は、基礎ゼロで Linux の運用と保守を学ぶことができるでしょうか? サーバー市場では、安定性、セキュリティ、無料のオープンソース、効率性、利便性などの利点により、Linux システムは最大 80% の市場シェアを持っています。このことから、Linux アプリケーションが非常に人気があることがわかります。現在でも将来でも、Linux を学ぶことは非常に良い選択です。ゼロから学ぶことは可能かというと、私の答えはもちろんです。 Oldboy Education Linux 対面クラスは、基礎知識がまったくない人向けに特別に設計されています

C 言語関数事典: 基本から応用まで、関数の使用方法の詳細な説明、具体的なコード例が必要です はじめに: C 言語は広く使用されているプログラミング言語であり、その強力な機能と柔軟性により、多くの開発者が最初に選択します。 C 言語では関数は重要な概念であり、コードの一部を独立したモジュールに結合して、コードの再利用性と保守性を向上させることができます。この記事では、C 言語関数の使い方を基礎から紹介し、読者が関数記述のスキルを習得できるように段階的に進めていきます。 1. C言語での関数の定義と呼び出し

すべての C# 開発者に呼びかけます! Microsoft と非営利団体 freeCodeCamp は、新しいグローバルな無料の Basic C# 認定資格の開始を発表しました。この認定資格は、あらゆるレベルの開発者が、さまざまなアプリケーションの作成に使用される人気のあるプログラミング言語である C# の基礎を学習できるように設計されており、LinkedIn プロフィールに表示できます。この認定資格には、35 時間の Microsoft Learn トレーニング コースと、freeCodeCamp でホストされる 80 問の試験が含まれています。このコースでは、変数、データ型、制御構造、オブジェクト指向プログラミングなどのトピックを扱います。 「私たちの Basic C# 認定資格は、まさにこの多用途性を習得する能力の証明を提供します。

PHP は、動的 Web サイト、Web アプリケーション、およびその他のインターネット サービスの開発に使用される、広く使用されているサーバー側スクリプト言語です。 PHP アプリケーションの開発プロセスでは、関数を使用するとコードが簡素化され、コードの再利用性が向上し、開発コストが削減されます。この記事では、PHPの機能の基本的な使い方から応用的な使い方までを紹介します。 1. PHP 関数の基本的な使用法 1. 関数の定義 PHP では、次のように function キーワードを使用して関数を定義します。 functiongreet($name){
