-
2021-03-06 14:57:44
/**
* Get PA Url
* @author jzhang6
* @return url
*/
public String getPAUrl(){
String PAUrl = "";
try {
String filePath = System.getProperty ("user.dir").toString()+"/src/test/resources/config/environment.xml";
logger.info("The path of environment.xml is : "+filePath);
File file = new File(filePath);
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(file);
String currentEnv = Util.getEnvStr();
Element el =XmlUtil.getSingleElement(document, "/root/environment[@type='" + currentEnv + "']/PAUrl");
PAUrl = XmlUtil.getElementValue(el, "No default PA URL");
logger.info("PA Url : "+PAUrl);
} catch (DocumentException e) {
e.printStackTrace();
}
return PAUrl;
}
XPath--快速获取XML数据的节点或属性
转载自 XPath可以快速定位到Xml中的节点或者属性.XPath语法很简单,但是强大够用,它也是使用xslt的基础知识.示例Xml: <?xml version="1.0" ...
XPath可以快速定位到Xml中的节点或者属性。XPath语法很简单,但是强大够用,它也是使用xslt的基础知识。
示例Xml: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 <?xml versio ...
Dom4j向XML中增加节点与属性——(四)
先获取到节点,然后在节点山添加Element 添加节点 添加属性 设置开始标签与结束标签的值book.addElement("描述").addAttribute("nam ...
java:利用xpath删除xml中的空节点
原始xml内容: b1 123
SpringMVC项目中web.xml中的节点载入顺序问题
SpringMVC项目中web.xml中的节点载入顺序问题,之前以为web.xml中就是一些配置信息,和节点的顺序没有关系.后来才发现初始化时的载入顺序是和节点的顺序相关的. 完整的web.xml文件 ...
DOM中元素节点、属性节点、文本节点的理解
DOM中元素节点.属性节点.文本节点的理解 节点信息 每个节点都拥有包含着关于节点某些信息的属性.这些属性是:nodeName(节点名称) nodeValue(节点值) nodeType(节点类型) ...
JAVA通过XPath解析XML性能比较(原创)
更多相关内容 -
java如何获取XML中子节点的内容
2021-02-27 14:41:32满意答案wenwei04162013.03.28采纳率:52%等级:7已帮助:408人java中获取xml节点元素值 根据不同的处理xml方式不同而不同。java中解析xml的方式:大体可以使用以下四种-------------------------------------------...满意答案
wenwei0416
2013.03.28
采纳率:52% 等级:7
已帮助:408人
java中获取xml节点元素值 根据不同的处理xml方式不同而不同。
java中解析xml的方式:大体可以使用以下四种
------------------------------------------------------------
DOM(Document Object Model)
为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,
然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。
优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;
缺点:将整个文档调入内存(包括无用的节点),浪费时间和空间;
使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)
SAX(Simple API for XML)
为解决DOM的问题,出现了SAX。SAX ,事件驱动。
当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,
程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;
SAX解析器代码比DOM解析器代码小,适于Applet,下载。
缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;
从事件中只能得到文本,但不知该文本属于哪个元素;
使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少;
DOM4J
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,
同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,
特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J
JDOM
为减少DOM、SAX的编码量,出现了JDOM;优点:20-80原则,极大减少了代码量。
使用场合:要实现的功能简单,如解析、创建等,但在底层,JDOM还是使用SAX(最常用)、DOM、Xanan文档。
------------------------------
参考代码
dom4j
------------------------------
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
---------------------------------------------
File f = new File("students.xml");
SAXReader reader = new SAXReader();
Document doc = reader.read(f);
Element root = doc.getRootElement();
for (Iterator iter = root.elementIterator(); iter.hasNext();) {
Element element = (Element) iter.next();
//System.out.println(element.attributeValue("email"));
String ids=element.elementText("stuId");
System.out.println(ids);
String names=element.elementText("stuName");
System.out.println(names);
String ages=element.elementText("age");
System.out.println(ages);
}
------------------------------------
dom 方式
---------------
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
------------------------
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
// 允许名字空间
// factory.setNamespaceAware(true);
// 允许验证
// factory.setValidating(true);
// 获得DocumentBuilder的一个实例
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException pce) {
System.err.println(pce);
// 出异常时输出异常信息,然后退出,下同
System.exit(1);
}
Document doc = null;
// 解析文档,并获得一个Document实例。
try {
try {
// InputStream is=new FileInputStream("students.xml");
doc = builder.parse("students.xml");
// doc = builder.parse(is);
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (DOMException dom) {
System.err.println(dom.getMessage());
System.exit(1);
} catch (IOException ioe) {
System.err.println(ioe);
// System.exit(1);
}
for (int i = 0; i < nlStudent.getLength(); i++) {
Element elmtStudent = (Element) nlStudent.item(i);
String email = elmtStudent.getAttribute("email");
System.out.println(email);
NodeList ids = elmtStudent.getElementsByTagName("stuId");
Element id = (Element)ids.item(0);
Node tId = id.getFirstChild();
System.out.println(tId.getNodeValue());
NodeList names = elmtStudent.getElementsByTagName("stuName");
Element e = (Element)names.item(0);
Node tName = e.getFirstChild();
System.out.println(tName.getNodeValue());
}
00分享举报
-
java 解析xml获取节点内容
2013-05-24 11:53:58不用任何jar包,解析xml内容。相同节点多个时。可以一次解析所有的内容。 -
怎么获取xml文件中某个节点的值
2021-04-11 11:00:20Java codeimport org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;public class XmlTest {/*** @author butnet* @param args* @throws DocumentE...Java codeimport org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class XmlTest {
/**
* @author butnet
* @param args
* @throws DocumentException
*/
public static void main(String[] args) throws DocumentException {
Document doc = DocumentHelper.parseText("butnethttp://jvmer.com");
Element user = doc.getRootElement();
Element name = user.element("name");
Element web = user.element("web");
System.out.println(name.getText());
System.out.println(web.getText());
}
}
/*使用DOM4J可以很方便的对XML进行读写, 项目地址 http://dom4j.sourceforge.net/ */
------解决方案--------------------
package com.anxin.dod;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import com.anxin.beans.*;
public class Login {
public static String saveXmlFilePath;
T_yonghu c=new T_yonghu();
//SAXReader reader=new SAXReader();//构建sax读取对象
List list = new ArrayList();
public T_yonghu readXML(String yhmc,String yhma,String path) throws IOException{
Document doc=(Document) Login.getXmlDocument(path);
Element ele=doc.getRootElement();
List eles=ele.elements("用户");
//System.out.println("根节点:"+ele.getName());
//Iterator it=root.elementIterator();//获取根节点下面的所有子节点
for(Iterator childs=eles.iterator();childs.hasNext();){
Element el = (Element)childs.next();
//System.out.println("yonghu:"+el.getText());
// System.out.println("yonghu:"+el.attributeValue("用户密码"));
if(yhmc.equals(el.getText()) && yhma.equals(el.attributeValue("用户密码")))
{ c.setYhmc(el.getText());
//c.setYhma(el.element("用户名称").attributeValue("用户密码"));
c.setYhsf(el.attributeValue("用户身份"));
c.setId(el.attributeValue("id"));
//list.add(c);
}
}
return c;
}
public static Document getXmlDocument(String saveXmlFilePath){
setSaveXmlFilePath(saveXmlFilePath);
SAXReader reader = new SAXReader();
Document doc = null;
try {
doc = reader.read(new File(saveXmlFilePath));
}finally{
return doc;
}
}
public static void saveDocument(Document doc) throws IOException{
OutputFormat format = OutputFormat.createPrettyPrint();
XMLWriter writer = new XMLWriter(new FileOutputStream(saveXmlFilePath),format);
writer.write(doc);
writer.close();
}
public static String getSaveXmlFilePath() {
return saveXmlFilePath;
}
public static void setSaveXmlFilePath(String saveXmlFilePath) {
Login.saveXmlFilePath = saveXmlFilePath;
}
}
-
Java解析xml获取根节点和子节点
2018-01-23 10:11:06XML 指可扩展标记语言(EXtensible Markup Language)。 XML 是一种很像HTML的标记语言。 XML 的设计宗旨是传输数据,而不是显示数据。 XML 标签没有被预定义。您需要自行定义标签。 XML 被设计为具有自我描述性...XML 指可扩展标记语言(EXtensible Markup Language)。
XML 是一种很像HTML的标记语言。
XML 的设计宗旨是传输数据,而不是显示数据。
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
1.准备xml文件
<?xml version="1.0" encoding="UTF-8"?> <student> <username>张三</username> <age>19</age> <addr>四川成都</addr> <phone>11000012120</phone> <!-- <a><b>我是在a节点里面的节点</b></a>--> </student>
名称可以包含字母、数字以及其他的字符,名称不能以数字或者标点符号开始
名称不能以字母 xml(或者XML、Xml等等)开始,名称不能包含空格
2.解析xml
DOM解析原理:
1)JAXB (oracle-Sun公司官方)
2)JDOM工具(非官方)
3)Dom4J工具(非官方)
三大框架(默认读取xml的工具就是Dom4j)
.......
SAX解析原理:
1)Sax解析工具(oracle-sun公司官方)
2.1DoM4j
package com.keduo.shangke.xml; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.SAXReader; import org.junit.Test; import java.io.File; public class Dom4jDemo { /** * 获取document对象 三种方式 */ @Test public void getDom() throws Exception { //方式一:不推荐 Document document1 = DocumentHelper.createDocument(); Element root1 = document1.addElement("student"); System.out.println("方式1" + root1.getName()); //方式二: 经常使用 //创建SAXReader对象 SAXReader reader = new SAXReader(); //读取文件 转换成Document Document document2 = reader.read(new File("students.xml")); Element root2 = document2.getRootElement(); System.out.println("方式2" + root2.getName()); //方式三: 强烈不推荐 String xmlStr = "<student>\n" + "<username>张三</username>\n" + "<age>19</age>\n" + "<addr>四川成都</addr>\n" + "<phone>11000012120</phone>\n" + "</student>"; Document document3 = DocumentHelper.parseText(xmlStr); Element root3 = document3.getRootElement(); System.out.println("方式3" + root3.getName()); } /** * 获取xml节点内容 */ @Test public void getElement() throws Exception{ //创建SAXReader对象 SAXReader reader = new SAXReader(); //读取文件 转换成Document Document document = reader.read(new File("students.xml")); Element root = document.getRootElement(); System.out.println("根节点-->"+root.getName()); //获取子节点 Element node=root.element("username");//在root节点下面找username节点 System.out.println("节点名称------>"+node.getName()+",节点值------->"+node.getStringValue()); //获取子节点中嵌套的子节点 Element a=root.element("a");//在root节点下面找username节点 Element b=a.element("b"); System.out.println("子节点里面嵌套的子节点是------->>>>"+b.getName()+"....."+b.getStringValue()); } }
2.2JAXB通过注解解析
JAXB能够使用Jackson对JAXB注解的支持实现(jackson-module-jaxb-annotations),既方便生成XML,也方便生成JSON,这样一来可以更好的标志可以转换为JSON对象的JAVA类。JAXB允许JAVA人员将JAVA类映射为XML表示方式,常用的注解包括:@XmlRootElement,@XmlElement等等。
JAXB(Java Architecture for XML Binding)是一个业界的标准,是一项可以根据XML Schema产生Java类的技术。该过程中,JAXB也提供了将XML实例文档反向生成Java对象树的方法,并能将Java对象树的内容重新写到XML实例文档。从另一方面来讲,JAXB提供了快速而简便的方法将XML模式绑定到Java表示,从而使得Java开发者在Java应用程序中能方便地结合XML数据和处理函数。
package com.keduo.shangke.xml; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement; //类名要与属性对应的节点父节点绑定 @XmlRootElement(name = "student") public class Student { private String username; private String age; private String addr; private String phone; //@XmlElemen:将xml中的对应属性绑定起来 写在get和set方法上,不能写在属性上 @XmlElement(name = "username") public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } @XmlElement(name = "age") public String getAge() { return age; } public void setAge(String age) { this.age = age; } @XmlElement(name = "addr") public String getAddr() { return addr; } public void setAddr(String addr) { this.addr = addr; } @XmlElement(name = "phone") public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Override public String toString() { return "Student{" + "username='" + username + '\'' + ", age='" + age + '\'' + ", addr='" + addr + '\'' + ", phone='" + phone + '\'' + '}'; } }
package com.keduo.shangke.xml; import org.junit.Test; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Unmarshaller; import java.io.File; public class JaxbTest { @Test public void test() throws JAXBException { //第一步准备xml文件 //第二步准备xml文件对应的实体类 //第三步在对应的实体类中添加注解 //第四步使用jaxb技术,实现 JAXBContext js=JAXBContext.newInstance(Student.class); //创建Unmarshaller对象 Unmarshaller u=js.createUnmarshaller(); Student student= (Student) u.unmarshal(new File("students.xml")); System.out.println(student); } }
3.sax解析xml参考: http://blog.csdn.net/lp284558195/article/details/79136322
-
java 获取Json中的某一个节点
2021-09-10 23:35:23} /** * 获取Json 中某个节点的单个内容(实际是从Map中获取的) * * @param mapKey Json中的某个节点 * @param jsonObject Json对象 * @param tClass 实体对象类型 * @param * @return */ public static T ... -
java 用dom的方式解析xml文件,子节点下有相同名字的子节点?
2019-06-13 13:30:54testSublist的长度,包括了1.1到1.5和1.2.1到1.2.2,也就是也就是统计出了1下面所有出现了IMPLEMENTATION-DATA-TYPE-ELEMENT,现在我只希望,获得的长度为5,也就是1.1到1.5,也就是一级一级获取下去?? ``` ... -
javaxml解析源码-XML-Parser:在Java中使用xPath解析xml文件源代码
2021-05-24 12:20:25java xml解析源码xmlParser 在Java中使用xPath解析xml文件源代码。 返回 基于数据节点xPath解析xml文件,并将xml文件数据返回到列表列表中。...查找列的唯一路径,并使用它来获取该节点(列)的数据。 -
Java操作XML文件及转义字符
2020-08-12 23:26:42目录 一、使用DOM4j进行XML的... Java中有两种解析XML文件的方式:DOM解析和SAX解析。 一、使用DOM4j进行XML的DOM解析 DOM解析是一次性将整个XML文档加载进内存,在内存中构建Document的对象树,通过Document对... -
SAX解析,如何修改XML文件中的节点属性
2018-05-05 14:13:09"子节点" ).item( 0 ).getFirstChild(); //每次运行修改文件中版本+1 name.setNodeValue((Integer. valueOf (name.getNodeValue().toUpperCase()) + 1 ) + "" ); } TransformerFactory tfactory = ... -
Java解析XML(4种方法)
2020-10-22 22:06:07解析xml四种方式:DOM,SAX,DOM4J,JDOM xml文件 <?xml version="1.0" encoding="utf-8" ?> <class> <student> <firstname>cxx1</firstname> <lastname>Bob1</lastname... -
Dom4j循环读取xml节点
2018-05-24 14:10:18需求:循环出同一父节点下多个相同字节点的数据,然后把这些数据按照顺序重新生成新的放入到新的节点名不同的xml内。准备:dom4j-1.6.1.jar、原始xml文件<?xml version="1.0" encoding="UTF-8... -
xml文件解析 (DOM4J解析XML) -java
2021-05-19 17:47:29文章目录前言一、本地XML解析1、导包并配置1、在项目下新建lib文件夹,并把jar包导入。2、更改项目配置2、编写一个简单的本地XML文件3、解析本地XML文件:二、解析网络上的XML文件1.网址:2、来解析此网络XML文件... -
Java操作XML文件
2019-08-30 09:21:57目录 一、使用DOM4j进行XML的DOM解析 1.1、使用DOM4j查询XML文档 1.2、使用DOM4j修改XML文档 1.3、使用xPath技术 ... Java中有两种解析XML文件的方式:DOM解析和SAX解析。 一、使用DOM4j进行XML的DOM解析 ... -
xmljava系统源码-xsnake:xsnake-超轻量级的分布式远程调用框架
2021-06-06 00:12:21xml java系统源码 XSnake用途 XSnake可快速搭建高可用性的分布式系统及REST服务。 免费获取XSnake <groupId>org.xsnake <artifactId>xsnake <version>1.90 XSnake原理 服务端:基于Spring提供的bean管理,使用... -
xml报文解析和组装
2021-02-27 15:43:52package ...import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.StringWriter;import java.util.ArrayList;import java.util.HashMap;import java.util.L... -
dom4j 根据xml节点路径查找节点,找到对应的目标节点下的子节点,对节点Text值进行修改
2018-04-27 13:36:18//根据xml节点路径查找节点 List l=document.selectNodes("/config/Property");//设置查找Property节点的xml路径 Iterator it=l.iterator(); while(it.hasNext()){ Element elm=(Element)it.next(); if(elm.... -
Java高级程序设计笔记 • 【第5章 XML解析】
2020-10-08 10:17:295.1 XML 文档概述 5.1.1 XML文档结构 5.1.1 XML结构说明 5.1.1 XML文档元素 5.1.2 XML文档语法规范 5.1.3 实践练习 5.2 使用 Dom4j 创建 XML 文档 5.2.1 Xml解析方法简介 5.2.1 Dom4j解析 5.2.2 Dom4j的... -
Java XML解析工具 dom4j介绍及使用实例
2018-04-21 09:48:13Java 有哪些优秀的类库及工具便于程序员对 XML 进行处理 ?大名鼎鼎的 DOM绿色环保的 SAX默默无闻的 Digester三种解析方式比较DOM优缺点:实现 W3C 标准,有多种编程语言支持这种解析方式,并且这种方法本身操作上... -
Java XML解析技术
2018-10-25 19:07:04**Java XML解析技术** **XML概述** 随着软件程序从独立的单机应用程序演化为分布式的企业系统,开发人员开始要面对一系列新的挑战。应用程序不再仅仅运行于一台机器上,而是会运行于多台机器上,并且这些机器的... -
JAVA上百实例源码以及开源项目源代码
2018-12-11 17:07:42数字证书:从文件中读取数字证书,生成文件输入流,输入文件为c:/mycert.cer,获取一个处理X.509证书的证书工厂…… Java+ajax写的登录实例 1个目标文件 内容索引:Java源码,初学实例,ajax,登录 一个Java+ajax写的... -
JAVA基于dom4j实现对XML操作
2018-02-26 22:23:43该篇博客写java基于dom4j来操作xml的一些基本实现,需要用到以下jar包 该篇博客目录 1、XML特点、语法规则 2、XML与HTML区别 3、基于dom4j下java实现对XML基本操作 一、XML特点、语法规则 1... -
XML就是这么简单
2018-02-10 19:05:27什么是XML? XML:extensiable markup language 被称作可扩展标记语言 XML简单的历史介绍: gml->sgml->html->xml gml(通用标记语言)–在不同的机器进行通信的数据规范 sgml(标准通用标记... -
java学习---XML&JSON
2021-05-23 19:34:49文章目录XML & JSON1、 XML 1.1 XML 介绍 1.1.1 What is it? 1.1.2 名词解释 1.2 XML 语法格式 1.2.1 文档声明 1.2.2 元素标记 1.2.3 内容解析 1.2.4 内容注释 1.3 XML 注意问题 1.3.1... -
JAVA如何使用Dom4j解析xml的DEMO案例
2017-11-13 21:53:03首先导入Dom4J的jar包(密码:kjv8)打印出xml文件中地产公司的id,名称和地址demo01.xml<?xml version="1.0" encoding="UTF-8"?> 万科A 广东深圳 </company> -
DOM4J创建XML文件和追加元素节点
2018-05-17 23:41:46在使用DOM4J时需要导入dom4j.jar包,然后使用其中的一些方法对XML文件进行操作。首先我们创建一个XML文件Student.xml<?xml version="1.0" encoding="UTF-8"?> <Students&... -
使用xPath技术快速获取指定节点并对其修改--(xPath技术基础)
2016-12-13 09:49:09xPath技术 1、问题:当使用dom4j查询比较深... 2、作用:用于快速获取所需的节点对象 3、在dom4j中如何使用xPath技术 1).导入xPath支持的jar包 jaxen-1.1-beta-6.jar 2).使用xPath的方法 List selectNodes -
牛逼!Java 从入门到精通,超全汇总版
2021-05-06 19:40:33文章目录Java 基础Head First JavaJava 核心技术卷一Java 编程思想设计模式Head First 设计模式图解设计模式设计模式重学 Java 设计模式Java 进阶Java 并发编程实战Java 并发编程艺术Java 并发编程之美图解Java多... -
XPath数据提取(Java版)(网络爬虫常用方法)
2022-03-27 21:07:13XML XML是一种用于标记电子文件使其具有结构性的标记语言. 虽然HTML和XML同宗同源,但是两者还是存在着重要的区别: 与HTML不同,XML是大小写敏感的.例如:<H1>与<h1>是不同的XML标签. 在HTML中,如果从上...