- Java XML 教程
- Java XML 首页
- Java XML 概述
- Java XML 解析器
- Java DOM 解析器
- Java DOM 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- Java SAX 解析器
- Java SAX 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- JDOM XML 解析器
- JDOM XML 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- Java StAX 解析器
- Java StAX 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- Java XPath 解析器
- Java XPath 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- Java DOM4J 解析器
- Java DOM4J 解析器
- 解析 XML 文档
- 查询 XML 文档
- 创建 XML 文档
- 修改 XML 文档
- Java XML 有用资源
- Java XML - 问题与解答
- Java XML - 快速指南
- Java XML - 有用资源
- Java XML - 讨论
Java JDOM Document 的 getContent() 方法
Java JDOM 的 getContent() 方法是 Document 类的方法,用于以 Content 对象的形式获取 XML 文档的所有内容的列表。此列表包含注释、根元素和 DTD 声明。
为了过滤内容对象以仅获取特定类型的内容(仅元素、仅注释等),可以使用 Filter 类的 Filter 方法创建特定内容的过滤器,并将这些过滤器作为参数传递给 getContent() 方法。
语法
以下是 Java JDOM Document 的 getContent() 方法的语法:
Document.getContent(); Document.getContent(index); Document.getContent(filter);
参数
getContent() 方法是一个多态方法,具有以下参数:
index -
表示要检索的内容对象的索引。filter -
表示 Filter 类创建的 Filter 对象。
返回值
Java getContent() 方法返回一个 Content 对象列表。
示例 1
以下是我们需要解析的 bookstore.xml 文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE bookstore[ <!ELEMENT bookstore (book+)> <!ELEMENT book (name,author,price)> <!ELEMENT name (#PCDATA)> <!ELEMENT author (#PCDATA)> <!ELEMENT price (#PCDATA)> ]> <!-- Information of a Bookstore (last updated 05-08-2024) --> <!-- All the books in the store are listed --> <bookstore> <book> <name>Treasure Island</name> <author>Robert Louis</author> <price>1400</price> </book> <book> <name>Oliver Twist</name> <author>Charles Dickens</author> <price>2000</price> </book> <book> <name>War and Peace</name> <author>Leo Tolstoy</author> <price>1500</price> </book> </bookstore>
这是一个基本的 Java 程序,它使用 Java JDOM Document 的 getContent() 方法从上述 bookstore.xml 文件中获取所有内容。
import java.io.File; import java.util.List; import org.jdom2.Content; import org.jdom2.Document; import org.jdom2.input.SAXBuilder; public class GetContent { public static void main(String args[]) { try { //Reading the document SAXBuilder saxBuilder = new SAXBuilder(); File inputFile = new File("bookstore.xml"); Document doc = saxBuilder.build(inputFile); //Getting the content List<Content> contentList = doc.getContent(); //Printing the list items for(Content c : contentList) { System.out.println(c); } } catch (Exception e) { e.printStackTrace(); } } }
显示 XML 文档的所有内容对象。
[DocType: <!DOCTYPE bookstore>] [Comment: <!-- Information of a Bookstore (last updated 05-08-2024) -->] [Comment: <!-- All the books in the store are listed -->] [Element: <bookstore/>]
示例 2
要获取特定索引处的内容对象,我们将一个整数索引传递给 getContent() 方法。如果索引不在内容大小范围内,则会抛出 IndexOutOfBoundsException 异常。
以下示例检索第 0 个索引处的内容:
import java.io.File; import org.jdom2.Content; import org.jdom2.Document; import org.jdom2.input.SAXBuilder; public class GetContent { public static void main(String args[]) { try { //Reading the document SAXBuilder saxBuilder = new SAXBuilder(); File inputFile = new File("bookstore.xml"); Document doc = saxBuilder.build(inputFile); //Getting the content Content content = doc.getContent(0); System.out.println(content); } catch (Exception e) { e.printStackTrace(); } } }
DTD 声明是文档的第一个内容对象;因此它被打印出来。
[DocType: <!DOCTYPE bookstore>]
示例 3
Filters 类的 element() 方法返回一个 Element 对象的 Filter 列表。此 Element 过滤器作为参数传递给 getContent() 方法,以仅从文档内部的内容中过滤元素。
在下面的程序中,我们只过滤了 Element 对象。
import java.io.File; import java.util.List; import org.jdom2.Content; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.filter.Filter; import org.jdom2.filter.Filters; import org.jdom2.input.SAXBuilder; public class GetContent { public static void main(String args[]) { try { //Reading the document SAXBuilder saxBuilder = new SAXBuilder(); File inputFile = new File("bookstore.xml"); Document doc = saxBuilder.build(inputFile); Filter<Element> element_filter = Filters.element(); //Getting the content List<Element> contentList = doc.getContent(element_filter); //Printing the list items for(Content c : contentList) { System.out.println(c); } } catch (Exception e) { e.printStackTrace(); } } }
只有一个根元素;因此它被打印出来。
[Element: <bookstore/>]
示例 4
Filters 对象的 comment() 方法返回一个 Comment 对象的 Filter 列表。此 Comment 过滤器作为参数传递给 getContent() 方法,以仅获取 Comment 对象。
这是一个使用 getContent() 方法仅过滤注释的 Java 程序:
import java.io.File; import java.util.List; import org.jdom2.Comment; import org.jdom2.Content; import org.jdom2.Document; import org.jdom2.filter.Filter; import org.jdom2.filter.Filters; import org.jdom2.input.SAXBuilder; public class GetContent { public static void main(String args[]) { try { //Reading the document SAXBuilder saxBuilder = new SAXBuilder(); File inputFile = new File("bookstore.xml"); Document doc = saxBuilder.build(inputFile); Filter<Comment> comment_filter = Filters.comment(); //Getting the content List<Comment> contentList = doc.getContent(comment_filter); //Printing the list items for(Content c : contentList) { System.out.println(c); } } catch (Exception e) { e.printStackTrace(); } } }
bookstore.xml 文件的两个注释打印在控制台上。
[Comment: <!-- Information of a Bookstore (last updated 05-08-2024) -->] [Comment: <!-- All the books in the store are listed -->]