java - 如何使用 XMLStreamReader 多次读取同一 XML 文件

标签 java xml file inputstream xmlstreamreader

我分三个阶段读取 xml 文件,在每个阶段,我对基于输入参数的不同元素感兴趣。

使用 XMLStreamReader 多次读取一个 xml 文件的最佳方法是什么?

xmlInputFactory = XMLInputFactory.newInstance();
    try {
        XMLStreamReader streamReader xmlInputFactory.createXMLStreamReader(inputStream);

 try {
        while (streamReader .hasNext()) {

其中 inputStream 是 FileInputStream 实例

目前,当我开始第二阶段读取时,我收到流关闭异常或streamReader.hasNext()为假。

最佳答案

将文件加载到内存中并使用 ByteArrayInputStream

File f = ...;
int len = (int)f.length(); // careful: If the life is over 4 gigs this won't work
byte myXML[] = new byte[];
FileInputStream fis = new FileInputStream(f);
int read = fis.read(f); // not guarenteed to read all bytes, but in my experience, this reads all bytes
if (read != len) throw RuntimeExcption("Didn't read everything");

// Now you can create as many XMLStreamReaders as you want like

    try {
        XMLStreamReader streamReader xmlInputFactory.createXMLStreamReader(new ByteArrayInputStream(buf));

关于java - 如何使用 XMLStreamReader 多次读取同一 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31048785/

相关文章:

php - 我怎样才能用 TCPDF 省略 Helvetica?

C++: setter和getter ?

java - 使用递归组合字符串

Java 字符串返回多个值

java - 如何从基于斜杠的分区中排除单字符表达式?

java - 从 flow.xml 打印日志

c - 从 C 文件中读取名称值对

java - Java3D 无法使旋转正常工作

sql - 从 SQL Server 2008 生成 XML 文件

c# - 如何在网页中显示和编辑 XML?