xml文件如下:
<?xml version="1.0" encoding="utf-8"?>
<books>
<book attribute="T001">
<name>
<t>
<t1>第一本书</t1>
</t>
<t>test</t>
</name>
<price>$14.09</price>
</book>
</books>
现在想的到name节点下的所有子节点:
<t>
<t1>第一本书</t1>
</t>
<t>test</t>
请问如何实现?至于拼凑实现的方法我知道,希望有有一种直接得到name节点下的内容,转换为dom之后再得到输出也可以。
最好给出代码或伪代码。讲讲实现思路也可以。
我现在写的读取代码如下:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DomParse {
public DomParse() {
//得到DOM解析器的工厂实例
//javax.xml.parsers.DocumentBuilderFactory类的实例就是我们要的解析器工厂
DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
try {
//通过javax.xml.parsers.DocumentBuilderFactory实例的静态方法newDocumentBuilder()得到DOM解析器
DocumentBuilder dombuilder = domfac.newDocumentBuilder();
//把要解析的XML文档转化为输入流,以便DOM解析器解析它
//InputStream is = new FileInputStream("test.xml");
//解析XML文档的输入流,得到一个Document
//由XML文档的输入流得到一个org.w3c.dom.Document对象,以后的处理都是对Document对象进行的
Document doc = dombuilder.parse("test.xml");
//得到XML文档的根节点
//在DOM中只有根节点是一个org.w3c.dom.Element对象。
Element root = doc.getDocumentElement();
System.out.println(root.toString());//.getTextContent()+"--------------");
//得到节点的子节点
//这是用一个org.w3c.dom.NodeList接口来存放它所有子节点的,还有一种轮循子节点的方法
NodeList books = root.getChildNodes();
if (books != null) {
for (int i = 0; i < books.getLength(); i++) {
Node book = books.item(i);
if (book.getNodeType() == Node.ELEMENT_NODE) {
//取得节点的属性值
//注意,节点的属性也是它的子节点。它的节点类型也是Node.ELEMENT_NODE
String attribute = book.getAttributes().getNamedItem("attribute").getNodeValue();
System.out.println("attribute: "+attribute);
//轮循子节点
for (Node node = book.getFirstChild(); node != null; node = node.getNextSibling())
{
if (node.getNodeType() == Node.ELEMENT_NODE) {
if (node.getNodeName().equals("name")) {
String name = node.getFirstChild().getTextContent();
String name1 = node.getFirstChild().getNodeValue();
System.out.println("name: "+name);
System.out.println("name1: "+name1);
}
if (node.getNodeName().equals("price")) {
String price = node.getFirstChild()
.getNodeValue();
System.out.println("price"+price);
}
}
}
}
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
DomParse domp=new DomParse();
}
}
我总共30分,所以只能给15分了,呵呵
谢谢!
问题补充:可能有点没有说清楚,
我想得到的不是下面的节点的内容
是包含节点在内的那些东西。
比如上面的,我遍历到了<name>节点
我想得到的文本是:
<t><t1>第一本书</t1></t><t>test</t>
而非去取 第一本书 或 test 这样的文本
问题补充:<![CDATA[<t><t1>第一本书</t1></t><tt>test</tt>]]>
内容不能用这样来代替。因为那内容还要被当作xml来解析
问题补充:是可以对应一个对象,但是下面的如<t><tt>这样的标签不固定啊,所以才想一起取出来
问题补充:
已经解决,用的dom4j的asXML来解决的。
相关推荐
Java使用正则表达式提取XML节点内容的方法示例主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧。 一、正则表达式简介 正则表达式是指一...
在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它结构清晰、易于阅读,常用于存储和传输数据。本教程将详细讲解如何在Java中解析XML文件,获取节点内容,且无需引入额外的jar包,如DOM...
在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...
Java 递归遍历 XML 所有元素是指使用 Java 语言来遍历 XML 文件中的所有元素节点,并将其值取出来。这种操作是 XML 解析的基础,能够为更复杂的解析工作奠定基础。 在 Java 中,通常使用 DOM4j 库来解析 XML 文件。...
在给定的代码片段中,可以看到一系列关于XML节点操作的方法,包括查询所有节点、删除子节点、添加子节点以及更新子节点。下面分别对这些方法进行详细解析。 ##### 1. 查询所有节点(`selectAllNodes()`) - **创建...
在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在数据交换、配置文件和文档结构化等领域。当处理大型XML文件时,传统递归方法可能会导致性能下降,特别是在处理深层...
在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,因其结构清晰、易于解析而被广泛应用于各种系统之间的数据传输。本文将深入探讨如何在Java中进行XML文件的导入与导出。 首先,理解XML...
document.xml 文件是基于 XML 格式的,可以使用 Java 中的 DOM 或 SAX 解析器来解析该文件。 3. 书签的 XML 结构 在 Word 文档中,书签是使用 `<w:bookmarkStart>` 和 `<w:bookmarkEnd>` 标签来表示的,其中 `...
本文将深入探讨如何在不同的编程环境中获取XML节点的属性和文字。 在Python中,我们可以使用`xml.etree.ElementTree`库来解析和操作XML。首先,我们需要导入这个库,并加载XML文件: ```python import xml.etree....
在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它结构清晰、易于阅读,常用于存储和传输数据。当处理XML文件时,有时我们需要将其内容转换为Java对象,如List,以便于操作和处理。本篇...
在企业级应用开发中,XML(可扩展标记语言)经常被用作数据交换格式,尤其在集成不同系统或服务时。Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细...
首先,关于SOAP XML报文中的节点首字母大小写转换,这是因为在SOAP规范中,XML元素的首字母通常是大写的,以便于区分元素和属性。在Java中,我们可以利用DOM(Document Object Model)解析器来实现这一转换。以下是...
在Java编程中,XML(可扩展标记语言)和Map(映射)是两种常见的数据存储和交换格式。XML因其结构化和易于解析的特性,在数据交换和配置文件中广泛使用,而Map则作为Java中存储键值对的高效数据结构。在实际开发中,...
对于获取XML节点信息,我们可以先定义对应的Java类,然后使用`Unmarshaller`对象将XML数据转换为Java对象,直接操作这些对象获取信息。 4. **StAX(Streaming API for XML)**: StAX提供了一种更高效的流式处理...
《Java and XML(英文第三版)_java_xml_birdsolc_源码》是关于Java与XML集成编程的一本权威指南,特别适合于那些希望深入理解如何在Java应用程序中有效地使用XML技术的开发者。这本书详细阐述了Java平台上的XML处理...
`XMLReader`和`XMLReader2`方法都实现了对XML节点的遍历和内容的提取。这两个方法的区别在于`XMLReader`接收一个`List<Element>`作为参数,而`XMLReader2`接收一个`Element`对象作为参数,这意味着`XMLReader2`可以...
在IT行业中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换和存储格式,尤其在处理结构化数据时。获取XML文档中的叶子节点是常见的操作,这涉及到解析XML和遍历其元素树。本篇文章将深入探讨如何...
Java提供`javax.xml.xpath`包来支持XPath表达式的编译和执行,可以用来定位和修改XML节点。 8. **XML Schema**: Java还提供了处理XML Schema(XSD)的能力,可以验证XML文档是否符合特定的模式。`javax.xml....
当我们处理SOAP XML报文时,有时会遇到需要转换XML节点名的情况,例如将节点名的首字母从小写转换为大写。以下将详细探讨这个主题。 首先,理解XML节点和节点元素的区别是至关重要的。在XML文档中,节点可以是元素...
无论使用哪种语言,修改XML节点值的过程都遵循类似的步骤:解析文件,找到目标节点,修改节点值,然后保存更改。在实际操作中,应确保正确处理可能出现的异常,并根据具体需求进行适当的错误处理和边界条件检查。