0 0

请问java中如何得到XML所有节点(带xml格式)25

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来解决的。
OO 
2008年7月08日 16:31

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

0 0

推荐一个做法给你:

引用
  <book attribute="T001">  
     <name>  
       <t>  
         <t1>第一本书</t1>  
       </t>  
       <t>test</t>  
     </name>  
     <price>$14.09</price>  
  </book>


将book 对应一个Book对象, 将name, price都解析进去.

Book {
 Name name;
 String price;
}

Name {
 List<T> tList;
}

T {
 List<T1> tiList;
}

T1 {
 String value;
}

2008年7月08日 17:16
0 0

你的代码不是已经遍历到了name节点了, 再深一层就是你要的t节点了呀.

2008年7月08日 16:40

相关推荐

    Java使用正则表达式提取XML节点内容的方法示例

    Java使用正则表达式提取XML节点内容的方法示例主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧。 一、正则表达式简介 正则表达式是指一...

    java 解析xml获取节点内容

    在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它结构清晰、易于阅读,常用于存储和传输数据。本教程将详细讲解如何在Java中解析XML文件,获取节点内容,且无需引入额外的jar包,如DOM...

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

    在Java开发中,JAXB(Java Architecture for XML Binding)是一个标准的API,用于将XML文档与Java对象之间进行互相转换。这个技术对于处理XML数据,尤其是解析和生成XML文档非常有用。当我们面临XML文档中存在嵌套子...

    Java递归遍历XML所有元素

    Java 递归遍历 XML 所有元素是指使用 Java 语言来遍历 XML 文件中的所有元素节点,并将其值取出来。这种操作是 XML 解析的基础,能够为更复杂的解析工作奠定基础。 在 Java 中,通常使用 DOM4j 库来解析 XML 文件。...

    XML节点的操作

    在给定的代码片段中,可以看到一系列关于XML节点操作的方法,包括查询所有节点、删除子节点、添加子节点以及更新子节点。下面分别对这些方法进行详细解析。 ##### 1. 查询所有节点(`selectAllNodes()`) - **创建...

    遍历XML文件内所有节点和属性

    在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在数据交换、配置文件和文档结构化等领域。当处理大型XML文件时,传统递归方法可能会导致性能下降,特别是在处理深层...

    java导入导出xml文件

    在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,因其结构清晰、易于解析而被广泛应用于各种系统之间的数据传输。本文将深入探讨如何在Java中进行XML文件的导入与导出。 首先,理解XML...

    java实现xml解析word文档代码实现

    document.xml 文件是基于 XML 格式的,可以使用 Java 中的 DOM 或 SAX 解析器来解析该文件。 3. 书签的 XML 结构 在 Word 文档中,书签是使用 `&lt;w:bookmarkStart&gt;` 和 `&lt;w:bookmarkEnd&gt;` 标签来表示的,其中 `...

    得到XML节点的属性和文字

    本文将深入探讨如何在不同的编程环境中获取XML节点的属性和文字。 在Python中,我们可以使用`xml.etree.ElementTree`库来解析和操作XML。首先,我们需要导入这个库,并加载XML文件: ```python import xml.etree....

    java XML转成LIST可以转成指定的类数组

    在Java编程中,XML(eXtensible Markup Language)是一种常用的数据交换格式,它结构清晰、易于阅读,常用于存储和传输数据。当处理XML文件时,有时我们需要将其内容转换为Java对象,如List,以便于操作和处理。本篇...

    java 解析xml 多级

    在企业级应用开发中,XML(可扩展标记语言)经常被用作数据交换格式,尤其在集成不同系统或服务时。Java作为一种广泛使用的后端编程语言,提供了多种方式来解析XML文档,使得处理多级嵌套的数据变得可能。本文将详细...

    Axis2 SOAP XML报文节点首字母小写转大写,节点命名空间前缀添加与剔除(JAVA)

    首先,关于SOAP XML报文中的节点首字母大小写转换,这是因为在SOAP规范中,XML元素的首字母通常是大写的,以便于区分元素和属性。在Java中,我们可以利用DOM(Document Object Model)解析器来实现这一转换。以下是...

    java一键xml转map,一键map转xml工具类

    在Java编程中,XML(可扩展标记语言)和Map(映射)是两种常见的数据存储和交换格式。XML因其结构化和易于解析的特性,在数据交换和配置文件中广泛使用,而Map则作为Java中存储键值对的高效数据结构。在实际开发中,...

    xml解析例子得到各个节点信息

    对于获取XML节点信息,我们可以先定义对应的Java类,然后使用`Unmarshaller`对象将XML数据转换为Java对象,直接操作这些对象获取信息。 4. **StAX(Streaming API for XML)**: StAX提供了一种更高效的流式处理...

    Java and XML(英文第三版)_java_xml_birdsolc_源码

    《Java and XML(英文第三版)_java_xml_birdsolc_源码》是关于Java与XML集成编程的一本权威指南,特别适合于那些希望深入理解如何在Java应用程序中有效地使用XML技术的开发者。这本书详细阐述了Java平台上的XML处理...

    Jdom查找XML文件的所有节点内容

    `XMLReader`和`XMLReader2`方法都实现了对XML节点的遍历和内容的提取。这两个方法的区别在于`XMLReader`接收一个`List&lt;Element&gt;`作为参数,而`XMLReader2`接收一个`Element`对象作为参数,这意味着`XMLReader2`可以...

    获取xml叶子节点

    在IT行业中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换和存储格式,尤其在处理结构化数据时。获取XML文档中的叶子节点是常见的操作,这涉及到解析XML和遍历其元素树。本篇文章将深入探讨如何...

    用java读取修改xml文件的代码实现

    Java提供`javax.xml.xpath`包来支持XPath表达式的编译和执行,可以用来定位和修改XML节点。 8. **XML Schema**: Java还提供了处理XML Schema(XSD)的能力,可以验证XML文档是否符合特定的模式。`javax.xml....

    Axis2的OMElement SOAP XML报文节点首字母小写转大写(注意,是节点,不是节点元素的值) java

    当我们处理SOAP XML报文时,有时会遇到需要转换XML节点名的情况,例如将节点名的首字母从小写转换为大写。以下将详细探讨这个主题。 首先,理解XML节点和节点元素的区别是至关重要的。在XML文档中,节点可以是元素...

    修改xml节点的值修改xml节点的值

    无论使用哪种语言,修改XML节点值的过程都遵循类似的步骤:解析文件,找到目标节点,修改节点值,然后保存更改。在实际操作中,应确保正确处理可能出现的异常,并根据具体需求进行适当的错误处理和边界条件检查。

Global site tag (gtag.js) - Google Analytics