①解析XML文件的工具类
import java.io.*; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class ResolveXML { /** * * @param path XML配置路径 * @param type 证件类型 * @param headNode XML节点名称 * @param street 所属镇街 */ public static List<String> getXMLValue(String path, String type,String headNode,String street) { File file = new File(path); DocumentBuilder db = null; List<String> resultList = new ArrayList<String>(); DocumentBuilderFactory dbf = null; Element element = null; int index = 0; List<String> xmlNode = getXMLNode(path, type, headNode,street); try { dbf = DocumentBuilderFactory.newInstance();// 返回documentBuilderFactory对象 db = dbf.newDocumentBuilder();// 返回db对象用documentBuilderFatory对象获得返回documentBuildr对象 Document dt = db.parse(file);// 得到一个DOM并返回给document对象 element = dt.getDocumentElement();// 得到一个elment根元素 //System.out.println("根元素:" + element.getNodeName());// 获得根节点 NodeList childNodes = element.getChildNodes();// 获得根元素下的子节点 // 遍历这些子节点 for (int i = 0; i < childNodes.getLength(); i++) { // 获得每个对应位置i的结点 Node node1 = childNodes.item(i); if (headNode.equals(node1.getNodeName())) { // 如果节点的名称为"Account",则输出Account元素属性type // System.out.println(node1.getAttributes().getNamedItem("type").getNodeValue()); String typeNodeVal = node1.getAttributes().getNamedItem("type").getNodeValue(); if (type.equals(typeNodeVal)) { NodeList nodeDetail = node1.getChildNodes();// 获得<Account>下的节点 // 遍历<Account>下的节点 for (int j = 0; j < nodeDetail.getLength(); j++) { // 获得<Account>元素每一个节点 Node detail = nodeDetail.item(j); if (xmlNode.get(index).equals(detail.getNodeName())) { // 输出money //System.out.println(detail.getTextContent()); resultList.add(detail.getTextContent()); if (index < xmlNode.size()) { index++; if (index == xmlNode.size()) { break; } } } } } } } } catch (Exception e) { e.printStackTrace(); } return resultList; } /** * * @param path * @param type * @param headNode * @return */ public static List<String> getXMLNode(String path, String type,String headNode,String street) { File file = new File(path);// 可以使用绝对路劲 String getNodeName ; DocumentBuilder db = null;// documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件) DocumentBuilderFactory dbf = null; Element element = null; List<String> nodes = new ArrayList<String>(); try { dbf = DocumentBuilderFactory.newInstance();// 返回documentBuilderFactory对象 db = dbf.newDocumentBuilder(); Document dt = db.parse(file); element = dt.getDocumentElement(); NodeList childNodes = element.getChildNodes();// 获得根元素下的子节点 for (int i = 0; i < childNodes.getLength(); i++) { Node node1 = childNodes.item(i); if (headNode.equals(node1.getNodeName())) { String nodevalType = node1.getAttributes().getNamedItem("type").getNodeValue();// 子节点type属性值 String nodevalStreet = node1.getAttributes().getNamedItem("street").getNodeValue(); if (nodevalType.equals(type) && nodevalStreet.equals(street) ) { // 根据类型属性值不同的节点值 NodeList nodeDetail = node1.getChildNodes(); for (int j = 0; j < nodeDetail.getLength(); j++) { // 获得<Account>元素每一个节点,detail.getNodeName() Node detail = nodeDetail.item(j); getNodeName = detail.getNodeName(); //System.out.println(getNodeName); if(getNodeName.startsWith("strongit-")){ nodes.add(getNodeName); } } } } } } catch (Exception e) { e.printStackTrace(); } return nodes; } } ②在项目的根目录创建languages.xml文件
<?xml version="1.0" encoding="UTF-8"?> <Strongit> <!-- 子节点命名方式必须为:strongit- --> <Account type="type2" street="西樵镇"> <strongit-name>name</strongit-name> <strongit-age>age</strongit-age> <strongit-sex>sex</strongit-sex> <strongit-addr>addr</strongit-addr> </Account> </Strongit>
③调用解析XML的工具类
import java.util.List; public class App { public static void main(String[] args) { List<String> value = ResolveXML.getXMLValue("languages.xml", "type2", "Account",""); for(String result : value){ System.out.println(result); } } }
④显示结果 name age sex addr
相关推荐
例如,如果有多个`<item>`节点,上面的循环会遍历每个节点,分别获取其子节点的值。 总结起来,不依赖任何额外的jar包,我们可以通过Java的标准库来解析XML文件并获取节点内容。这种方法适用于小规模的XML文件,...
对于每个元素节点,可以使用`getAttribute()`获取属性值,`getTextContent()`获取文本内容。 ```java String attrValue = element.getAttribute("属性名"); String text = element.getTextContent(); ``` 6. 处理...
使用JAXB解析XML时,我们首先需要创建一个Java类模型,这个模型反映了XML文档的结构。每个XML元素对应一个Java类,类的属性对应元素的属性或子元素。例如,如果XML中有以下结构: ```xml <text>Some text here ...
接下来,我们可以递归地遍历XML结构,访问每个元素节点及其属性: ```java void traverse(Element element) { // 访问元素的属性 for (Attribute attr : element.attributes()) { System.out.println("属性名: ...
### Java解析XML——DOM详解 #### 一、DOM解析概念 **Document Object Model (DOM)**是一种平台和语言中立的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。DOM最初是为HTML设计的,但后来也被...
在"Java解析XML性能对比分析Demo"中,你可以通过运行这些解析器的示例代码,观察它们在处理相同XML文件时的内存占用、处理速度等指标,以了解哪种解析方式更适合你的项目需求。例如,如果你处理的XML文件较小,DOM或...
- `XmlFile.cpp`:通常包含XML解析器的实现代码,包括读取文件、解析XML结构、提取属性等功能。 - `XmlFile.h`:头文件,可能包含了类定义和相关的函数声明,供其他源文件引用以调用XML解析功能。 6. **扩展性**...
SAX(Simple API for XML)是一种基于事件的解析方式,在解析 XML 文件时,SAX 解析器会触发一系列事件,每个事件对应 XML 文档中的一个元素或属性。Java 中使用 SAX 方式解析 XML 文件需要实现一个事件处理器,来...
Java解析XML的四种经典方法是XML处理中常用的技术,它们分别是DOM、SAX、StAX和JDOM。每种方法都有其独特的特性和适用场景,下面将详细介绍这四种方法。 1. DOM(Document Object Model)解析: DOM是W3C制定的一种...
接下来,需要定义一个 XML 文件,其中包含了 beans 节点,每个节点对应一个对象。 最后,需要编写一个主类,实现了 BeanFactory 接口,用于解析 XML 文件并获取对应的对象。ClassPathXmlApplicationContext 类使用 ...
接着,我们使用 Document 对象的 getElementsByTagName() 方法获取了所有的 book 节点,然后遍历每个 book 节点,获取其名称、值和类型,并获取其属性和子节点。 在实际应用中,DOM 解析 XML 文件的过程可以应用于...
Java解析XML的四种经典方法主要涵盖DOM、SAX、StAX和JDOM这四种方式,每种方法都有其独特的优势和适用场景。 1)DOM(JAXP Crimson 解析器) DOM(Document Object Model)是W3C推荐的一种XML解析标准,它将XML...
标题“java_dom解析xml xml java”表明了本文档的主题是关于如何使用Java中的DOM技术来解析XML文件。 #### 描述分析 描述中提到这是一个适合新手入门的内容,并给出了一个简单的XML示例。该XML文档包含了一个`...
Java解析XML配置文件是开发过程中常见的一项任务,特别是在基于Java的框架中,如Spring,大量使用XML文件来存储配置信息。DOM4J是Java中一个非常流行且功能强大的XML处理库,它提供了丰富的API用于读取、写入、修改...
总结起来,实现“java解析xml动态生成树形菜单结构”的项目,需要掌握以下核心知识点: 1. Java的DOM解析XML,构建树形数据结构。 2. 设计和实现无限层级的树形菜单数据模型。 3. 使用`JSTree`库在前端渲染树形菜单...
Java解析XML文件主要依赖于Java API中的DOM(Document Object Model)、SAX(Simple API for XML)和StAX(Streaming API for XML)等解析器。在本案例中,我们重点讨论DOM解析器,DOMO通常指的是DOM操作。DOM解析器...
### Java解析XML文件:DOM与SAX解析技术详解 #### DOM解析:JAXP与Crimson解析器 DOM(Document Object Model),即文档对象模型,是W3C为XML文档定义的一种标准接口,用于在各种编程语言中操作XML文档。DOM将XML...
总结,Java解析XML的方式多样,每种都有其适用场景。理解这些方法的原理和优缺点,能够帮助开发者根据项目需求选择最佳实践。在实际工作中,可以结合使用这些解析技术,以实现更高效、更安全的XML处理。
通过解析XML文件`test01.xml`,获取每个需要导入的元素,然后批量执行数据库的插入操作。这只是一个基础示例,实际应用中可能需要根据具体需求进行调整,例如处理嵌套元素、处理属性和值的转换等。 总的来说,DOM4J...
Java 中有多种方法可以解析 XML 文档,其中最常用的两种方法是使用基于事件的 XML 简单 API(Simple API for XML,SAX)和基于树和节点的文档对象模型(Document Object Model,DOM)。Sun 公司提供了 Java API for ...