`
arual
  • 浏览: 10815 次
社区版块
存档分类
最新评论

javaee笔记之Dom4j 使用实例

    博客分类:
  • jee
 
阅读更多
<?xml version="1.0" encoding="GBK"?>  //startDocument
<书架>// startElement     //character
	<书 ISBN="a" 出版社="高等教育出版社">// startElement 
		<书名>javaee 入门</书名>// endElement
		<作者>Pole</作者>
		<售价>39.00</售价>
	</书>
	<书 ISBN="b">
		<书名>JavaScript入门</书名>
		<作者>Francois</作者>
		<售价>28.00</售价>
	</书>
</书架>
//endDocument

 

 

用Dom4J 来解析:

public class Dom4JDemo {
//	1、得到某个具体的节点内容:第2本书的作者
	@Test
	public void test1() throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		//依次得到第2本书的作者
		List<Element> es = root.elements("书");
		Element e = es.get(1);
		Element author = e.element("作者");
		//拿到内容打印输出
//		System.out.println(author.getText());
		Assert.assertEquals("Francois", author.getText());
	}
	@Test
	public void test11() throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		
		String xpath = "//书[2]/作者";
		Node author = document.selectSingleNode(xpath);
		
		//Assert.assertEquals("Francois", author.getText());
	}
//	2、遍历所有元素节点:
	@Test
	public void test2() throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		treeWalk(root);//遍历所有的元素,打印他的名称
	}
	private void treeWalk(Element root) {
		System.out.println(root.getName());
		List<Element> es = root.elements();
		for(Element e:es){
			treeWalk(e);
		}
	}
//	private void treeWalk(Element root){
//		System.out.println(root.getName());
//		//节点的数量
//		int count = root.nodeCount();
//		for(int i=0;i<count;i++){
//			Node node = root.node(i);//取索引上节点
//			if(node.getNodeType()==Node.ELEMENT_NODE){
//				treeWalk((Element)node);
//			}
//		}
//	}
	
//	3、修改某个元素节点的主体内容:修改第2本书的售价
	@Test
	public void test3() throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		//得到第2本书的售价
		Element secondBook = (Element) root.elements().get(1);
		Element secondBookPrice = secondBook.element("售价");
		//设置主体内容
		secondBookPrice.setText("8.00");
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
//	4、向指定元素节点中增加子元素节点:给第1本书添加批发价
	@Test
	public void test4()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书:直接添加新元素
		Element firstBook = root.element("书");
		firstBook.addElement("批发价").setText("1");
		
		
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
//	5、向指定元素节点上增加同级元素节点:在第一本书的售价前面添加内部价
	@Test
	public void test5()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书
		Element firstBook = root.element("书");
		//得到第1本书的所有子元素:List
		List<Element> children = firstBook.elements();
		//借助DocumentHelper创建内部价元素
		Element price = DocumentHelper.createElement("内部价");
		price.setText("99");
		//挂接到老3的位置上
		children.add(2, price);
		
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
//	6、删除指定元素节点:删除批发价
	@Test
	public void test6()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书
		Element firstBook = root.element("书");
		
		//自己不能删自己
		Element price = firstBook.element("批发价");
		firstBook.remove(price);
		
		
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
//	7、操作XML文件属性:第1本书添加一个出版社属性
	@Test
	public void test7()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书
		Element firstBook = root.element("书");
		
		firstBook.addAttribute("出版社", "高等教育出版社");
		
		
		//写回XML文档
		OutputStream out = new FileOutputStream("src/book.xml");
		OutputFormat format = OutputFormat.createPrettyPrint();
//		format.setEncoding("UTF-8");//指定编码:这是默认编码
		XMLWriter writer = new XMLWriter(out, format);
		writer.write(document);
		writer.close();
	}
	//获取第一本书的出版社属性值
	@Test
	public void test8()throws Exception{
		//得到Document对象
		SAXReader reader = new SAXReader();
		Document document = reader.read("src/book.xml");
		//得到根元素
		Element root = document.getRootElement();
		
		//找到第1本书
		Element firstBook = root.element("书");
		
		String value = firstBook.attributeValue("出版社");
		Assert.assertEquals("高等教育出版社", value);
		
		
	}
}

 

分享到:
评论

相关推荐

    javaee笔记

    4. **Filter**:Filter是JavaEE中的一个过滤器接口,允许在请求被Servlet处理之前或之后执行预处理和后处理操作,如登录验证、GZIP压缩等。 5. **MySQL & JDBC**:MySQL是一款流行的开源关系型数据库管理系统,JDBC...

    JAVAEE笔记

    ### JAVAEE笔记知识点详解 #### 一、Eclipse使用与程序的断点调试 ##### Eclipse的使用 Eclipse是一款开源的、跨平台的集成开发环境(IDE),支持多种编程语言,包括Java。对于JavaEE开发者而言,Eclipse提供了...

    java从入门到精通笔记

    - **动态创建对象**: 使用反射创建实例 - **访问私有成员**: 反射访问私有属性和方法 #### 二、Java Web开发 **1. Oracle数据库** - **Oracle安装与配置** - **SQL基础**: DDL, DML, DQL - **事务管理** **2. JDBC...

    Java学习笔记-个人整理的

    {14.4}dom4j}{207}{section.14.4} {14.5}XPath}{210}{section.14.5} {14.6}apache.commons}{211}{section.14.6} {15}sqlite3}{213}{chapter.15} {16}Web基础}{215}{chapter.16} {16.1}...

    机械原理课程设计 破碎机.doc

    机械原理课程设计 破碎机.doc

    电子设计论文施密特触发器电子设计论文施密特触发器

    电子设计论文施密特触发器电子设计论文施密特触发器

    电子设计论文往返式流动灯电子设计论文往返式流动灯

    电子设计论文往返式流动灯电子设计论文往返式流动灯

    基于深度学习来实现序列到序列.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

    美国扩大电动汽车充电基础设施政策(英文).pdf

    政策背景与动机: 签署法案:2021年11月15日,拜登总统签署了《基础设施投资和就业法案》(IIJA),旨在通过多项措施推动美国电动汽车充电基础设施的扩张。 市场增长:随着电动汽车市场的快速增长,对充电基础设施的需求也日益增加,政府政策成为推动这一发展的关键力量。 电动汽车充电基础: 充电技术:电动汽车充电技术通常分为三级,各级充电速度和功率不同,满足不同场景下的充电需求。 充电站类型:包括公共、私人及工作场所充电站,各自具有不同的访问限制和使用特点。 市场趋势与现状: 市场增长:EV市场增长依赖技术进步、成本降低及充电便利性的提高。 充电站数量:截至2022年10月,美国公共和私人充电站总数超过50,000个,其中93%为公共充电站。 区域差异:充电站分布存在地区差异,部分低收入社区充电基础设施不足。 政策与项目: NEVI公式计划:通过IIJA设立的国家电动汽车基础设施(NEVI)公式计划,为各州提供资金以建设EV充电站。 税收抵免:扩展了替代燃料汽车加油站的税收抵免政策,包括EV充电站,以激励投资者。 联合办公室:DOT和DOE成立联合办公室,负责NEVI计划的实施和监管,确保

    电子设计论文照明过暗提醒电路电子设计论文照明过暗提醒电路

    电子设计论文照明过暗提醒电路电子设计论文照明过暗提醒电路

    前端,HTML+CSS的综合案例,网页开发

    我选用的软件是:Visual Studio CODE,这个软件在前端开发中十分常用,且提供了很大的便利。 当然也可以用记事本开发,记得把后缀名改成.html 还有我的CSS使用的是内部样式表。 写在head标签下。用到的标签有  <h1></h1>    <img src="lyf.jpg" class="god">     <p>    </p> 就是这三个标签,构成了HTML的主体架构。 而CSS则是设置了以下形式。 font-size: 16px;             line-height: 32px;             font-family: "Microsoft Yahei";             text-align: left;             text-indent:2em;          text-decoration: none;             color: #888888         width:66px

    MFC MAPI 源码和可执行文件

    大名鼎鼎的MFC MAPI 源码和可执行文件,是开发OUTLOOK插件的好帮手。

    机械原理课程设计插床机构机械设计.doc

    机械原理课程设计插床机构机械设计.doc

    基于深度学习的音频分类 前端App.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

    基于BERT模型的深度学习中文文本分类实现,包含大约20000条新闻的训练和测试集,包装有简单HTTP接口可供调用。.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

    《化工设备机械基础》课程设计 IB储罐设计.doc.doc

    《化工设备机械基础》课程设计 IB储罐设计.doc.doc

    机械原理课程设计网球自动捡球机.doc

    机械原理课程设计网球自动捡球机.doc

    EKFUKFCKF录屏.mp4

    EKFUKFCKF录屏.mp4

    仿新浪读书小程序源码学习

    仿新浪读书小程序源码学习

    基于科大讯飞AI营销算法比赛实现CTR深度学习方法.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

Global site tag (gtag.js) - Google Analytics