我正在构建一个创建XML的流程(来自各种来源,并且出于各种目的,我事先并不知道),我想将生成的XML直接泵入标准XML处理,如SAX,StAX和DOM。我已经完成了一个StAX实现,它首先生成一个XML文件,StAX进程读取该文件。但我真的想跳过中间文件的创建和阅读。似乎SAX是正确的选择,因为推送解析器非常适合这项工作;处理XML变得可用。
我不太清楚如何设置简单地将字符串从一个Java组件传递到SAX解析器进程。大多数示例我发现了读取文件,并且有一些使用URLConnection来支持服务类型应用程序。在这种情况下,源将是另一个Java组件,它是同一系统的一部分。
答案 0 :(得分:1)
sax解析器可以基于InputSource
从Reader
读取。要将字符串提供给它,只需将该字符串包裹在StringReader。
要解析的代码如下所示:
XMLReader xmlReader = SAXParserFactory.newInstance()
.newSAXParser().getXMLReader();
//Attach content handler, etc...
InputSource source = new InputSource(new StringReader(xml_string));
xmlReader.parse(source);
当然还有一些我没有费心去做的异常处理。
您可以在StAX和DOM中执行相同操作,但当然您连接StringReader
的位置的详细信息也不同。