0 0

解析 XML5

<?xml version="1.0" encoding="UTF-8"?>
<root>
	<data name="folder111">
		<data name="1" template="t00001" />
		<data name="2" template="t00001" />
	</data>
	<data name="folder222" template="t00002">
	         <data name="1" template="t00001" />
		<data name="2" template="t00001" />
		<data name="2" template="t00001" />
	</data>
	
	<template id="t00001">
		<node name="folder1">
			<node name="folder2">
				<node name="folder3"/>
			</node>
			<node name="folder4">
				<node name="folder5">
					<node name="folder6" />
				</node>
			</node>
		</node>
	</template>
	<template id="t00002">
		<node name="test1">
			<node name="test2">
				<node name="test3"/>
			</node>
			<node name="test4">
				<node name="test5">
					<node name="test6" />
				</node>
			</node>
		</node>
	</template>
</root>


解析出template节点
\folder1\folder2\folder3
\folder1\folder4\folder5
test1\test2\test3
test1\test4\test5\test6

问题补充:我采用的是JDK中的org.w3c.*;
不知道有没有别的更高效率的解析。
	private void getPath(NodeList nodeList, List<String> lstPath) {
		for (int i = 0; i < nodeList.getLength(); i++) {
			StringBuffer sbPath = new StringBuffer();
			Node node = nodeList.item(i);
			if (node.getNodeName().equalsIgnoreCase(Constants.NODE)) {
				Node attrNode = getNode(node, Constants.NAME);
				sbPath.append(File.separator).append(attrNode.getNodeValue());
				if (node.hasChildNodes()) {
					for (int j = 0, len = node.getChildNodes().getLength(); j < len; j++) {
						StringBuffer sb = new StringBuffer(sbPath);
						getPath(node.getChildNodes().item(j), sb, lstPath);
					}
				} else {
					lstPath.add(sbPath.toString());
//					System.out.println("full folder path=" + sbPath.toString());
				}
			}

		}
	}
	
	private void getPath(Node node, StringBuffer sbPath, List<String> lstPath) {
		if (node.getNodeName().equalsIgnoreCase(Constants.NODE)) {
			Node attrNode = getNode(node, Constants.NAME);
			sbPath.append(File.separator).append(attrNode.getNodeValue());
			if (node.hasChildNodes()) {
				for (int j = 0, len = node.getChildNodes().getLength(); j < len; j++) {
					getPath(node.getChildNodes().item(j), sbPath, lstPath);
				}
			} else {
				lstPath.add(sbPath.toString());
//				System.out.println("full folder path=" + sbPath.toString());
			}
		}
	}
2012年2月14日 10:32

2个答案 按时间排序 按投票排序

0 0


节点里面都没有内容,你要解析什么东西,假如节点里面有内容可以用下面JDOM进行解析
Document d = builder.build(new StringReader(xml)); 
List list= new ArrayList();
这里解析是得到folder1 下有多个子节点
list = d.getRootElement().getChild("t00001").getChild("folder1").getChildren();
for (int i = 0; i < list.size(); i++) {
Element recordEle = (Element)list.get(i);
然后得到接待下的text内容,上面的代码只有节点里面包含节点,没有值。
recordEle.getChildText("folder2")
}

2012年2月14日 15:55
0 0

什么意思?解析xml,Java不是有很多工具和方法吗,不明白作者想问什么?

2012年2月14日 11:11

相关推荐

    PB 解析XML (代码案例)

    标题中的“PB 解析XML”指的是使用PowerBuilder(简称PB)这一编程工具处理XML数据的过程。PowerBuilder是一款广泛用于开发企业级应用的可视化编程环境,它支持多种数据格式,包括XML。XML(eXtensible Markup ...

    C++解析xml文件

    本文将深入探讨如何使用C++来解析XML文件,主要围绕“C++实现对xml文件的解析”这一主题展开。 XML文件通常包含一系列元素,每个元素都有开始标签、结束标签和可能的属性。C++中解析XML文件的方法多种多样,这里...

    解析xml的jar包

    解析XML是将XML文档转换为程序可以理解的数据结构的关键步骤。本文将深入探讨XML解析的基本概念、常用方法以及相关的Java库——JDOM。 XML文档由一系列元素构成,每个元素都包含标签、属性和内容。解析XML的过程...

    delphi解析xml文件实例

    本实例将详细探讨如何在Delphi 7中解析XML文件。 首先,我们需要引入必要的单元,如`Classes`和`XMLDoc`,它们包含了处理XML的基本类。`Classes`单元提供了基础的TStringList等类型,而`XMLDoc`单元则包含了...

    C++解析xml文档或者xml字符串方法

    在C++中,解析XML文档或XML字符串是常见的任务,特别是在需要与JavaScript或其他不支持指针的语言交互时。本文将详细介绍如何在Visual Studio 2010环境下利用Microsoft的MSXML库来处理XML数据。 首先,让我们看看...

    STM32解析XML

    在本文中,我们将深入探讨如何在STM32F107上使用minixml库解析XML(可扩展标记语言)文档,这对于那些初次尝试在嵌入式环境中处理XML数据的开发者来说,是非常有价值的。 XML是一种通用的数据交换格式,它允许结构...

    STM32解析XML完整工程.zip

    在本项目"STM32解析XML完整工程.zip"中,重点是实现STM32利用软件资源处理XML(eXtensible Markup Language)文件。XML是一种用于标记数据的标准格式,常用于存储和传输结构化数据,例如配置文件、设备通信协议等。 ...

    PB 解析xml格式串

    在“PB解析xml格式串”的主题中,我们主要关注如何将XML格式的数据转换为Protocol Buffers的二进制格式,以便于高效地存储和传输。以下是一些相关的知识点: 1. **Protocol Buffers介绍**:PB是一种高效的序列化...

    PB解析XML字符串 把XML 变为数据窗口

    标题中的“PB解析XML字符串 把XML 变为数据窗口”指的是使用PowerBuilder(PB)这一编程工具,处理XML格式的数据,并将其转换成数据窗口对象的过程。数据窗口是PowerBuilder中的一个核心组件,用于显示、编辑和管理...

    domino通过lotusscript解析xml

    在标题“domino通过lotusscript解析xml”中,我们关注的重点是使用Lotusscript来解析XML文件。解析XML意味着读取其结构并从中提取所需的信息。在Lotusscript中,我们可以使用内置的XML处理对象,如`XMLDocument`,来...

    JAVA JAXB 解析XML嵌套子节点为字符串

    使用JAXB解析XML时,我们首先需要创建一个Java类模型,这个模型反映了XML文档的结构。每个XML元素对应一个Java类,类的属性对应元素的属性或子元素。例如,如果XML中有以下结构: ```xml &lt;text&gt;Some text here ...

    C#解析XML文件并用WinForm显示

    在本文中,我们将深入探讨如何使用C#编程语言解析XML文件,并将其内容在Windows Forms(WinForm)应用程序中展示。XML(eXtensible Markup Language)是一种数据存储和交换的标准格式,而C#是Microsoft .NET框架下...

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

    使用javascript解析xml文件或xml格式字符串中文WORD版

    资源名称:使用Javascript解析xml文件或xml格式字符串 中文WORD版   内容简介: 本文档主要讲述的是使用Javascript解析xml文件或xml格式字符串;javascript中,不论是解析xml文件,...

    java 解析xml 多级

    Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细讲解如何在Java中解析XML,特别是针对多级结构的情况。 首先,Java提供了两种主要的API来处理XML:...

    android下解析xml文件的demo

    本教程将详细介绍如何在Android环境下解析XML文件,以"ReadXMLDemo"为例,展示具体步骤和关键知识点。 首先,XML(eXtensible Markup Language)是一种自定义标记语言,它的结构清晰,易于读写,适合于数据交换和...

    STM32使用ezxml解析XML文件

    4. **解析XML**:使用ezxml库的核心函数`ezxml_parse()`解析XML文件。这个函数会返回一个ezxml_t类型的根节点,代表整个XML文档。然后,可以使用`child()`, `tag()`, `attr()`, `text()`等方法来遍历和访问XML树。 ...

    解析XML特殊字符方法

    有两种主要方法来解析XML中的特殊字符: **方法一:使用实体引用** 实体引用是XML中最常见的处理特殊字符的方式。当你需要在XML文档中插入特殊字符时,可以使用对应的实体引用。比如,如果你想在文本中包含一个...

    JAVA 解析XML生成XML文档实例

    JAVA 解析XML和生成XML文档源码。比较全 1.DOM生成和解析XML文档 2.SAX生成和解析XML文档 3.DOM4J生成和解析XML文档 4.JDOM生成和解析XML

    js解析XML文件

    JS 解析 XML 文件 作为一名 IT 行业大师,我将从给定的文件中生成相关知识点,涵盖 JS 解析 XML 文件的各种方面。 JS 解析 XML 文件的必要性 在当前的 web 开发中,XML 文件广泛应用于数据交换和存储。因此,如何...

Global site tag (gtag.js) - Google Analytics