嘿伙计们,所以我是Java-XML解析世界的新手,发现StaX API可能是我最好的选择,因为我需要读取和写入XML文件 . 好吧,所以我有一个非常简短的(应该是非常简单的)程序(应该)创建一个XMLInputFactory并使用它来创建XMLStreamReader . XMLStreamReader是使用附加到与源文件位于同一目录中的XML文件的FileInputStream创建的 . 但是,即使正确编译了FileInputStream,XMLInputFactory也无法访问它,如果没有FileInputStream,它就无法创建XMLStreamReader . 请帮忙,因为我不知道该放弃了什么,并且很沮丧!
import javax.xml.stream.*;
import java.io.*;
public class xml {
static String status;
public static void main(String[] args) {
status = "Program has started";
printStatus();
XMLInputFactory inFactory = XMLInputFactory.newInstance();
status = "XMLInputFactory (inFactory) defined"; printStatus();
try { FileInputStream fIS = new FileInputStream("stax.xml"); }
catch (FileNotFoundException na) { System.out.println("FileNotFound"); }
status = "InputStream (fIS) declared"; printStatus();
try { XMLStreamReader xmlReader = inFactory.createXMLStreamReader(fIS); } catch (XMLStreamException xmle) { System.out.println(xmle); }
status = "XMLStreamReader (xmlReader) created by 'inFactory'"; printStatus();
}
public static void printStatus(){ //this is a little code that send notifications when something has been done
System.out.println("Status: " + status);
}
}
如果需要,这里也是XML文件:
<?xml version="1.0"?>
<dennis>
<hair>brown</hair>
<pants>blue</pants>
<gender>male</gender>
</dennis>
1 回答
你的问题必须与基本的java编程有关,没有什么可做的/ stax . 您的FileInputStream在try块中范围内(一些不错的代码格式化会有所帮助),因此您尝试创建XMLStreamReader的代码不可见 . 格式化:
在次要说明中,StAX是一个很好的API,对于java中高性能的XML处理来说非常棒 . 但是,它不是最简单的XML API . 你最好从基于DOM的apis开始,如果你遇到使用DOM的性能问题,那么只能使用StAX . 如果你坚持使用StAX,我建议使用
XMLEventReader
而不是XMLStreamReader
(再次,更简单的api) .最后,不要隐藏异常细节(例如捕获它们并打印出不包含异常本身的东西)或忽略它们(例如在抛出异常后继续处理而不试图处理问题) .