我正在构建一个创建 XML 的流程(从各种来源并出于我事先不知道的各种目的),并且我希望将生成的 XML 直接注入(inject)到标准 XML 处理中,例如 SAX、StAX和 DOM。我已经完成了一个 StAX 实现,它首先生成一个 XML 文件,然后 StAX 进程读取该文件。但我真的很想跳过中间文件的创建和读取。看起来 SAX 是正确的选择,因为推送解析器非常适合这项工作;在 XML 可用时对其进行处理。
我不太明白如何设置简单地将字符串从一个 Java 组件传递到 SAX 解析器进程。我发现的大多数示例都读取文件,并且有些示例使用 URLConnection 来支持服务类型应用程序。本例中的源将是属于同一系统的另一个 Java 组件。
最佳答案
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
的位置的详细信息当然有所不同。
关于Java 将字符串传递给 SAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27484109/