Java 将字符串传递给 SAX

标签 java xml-parsing sax saxparser

我正在构建一个创建 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/

相关文章:

JavaFX 绑定(bind)不传递值

java - 开发 Web 服务的 Java 技术最佳实践?

java - 如何让我的 Android 应用程序方法减少 RAM 消耗

iOS:NSString(数据:NSData,编码:UInt)在某些字符处失败

java - 使用 Jackcess 在 Java 中更新行

android - XmlPullParser getAttributeValue 返回 null

java - 从 XML 文件中获取标签和值

c++ - SAX2 (Xerces-C) : How to get the line number of parsed tags?

java - 在 Java 中解析 XML 文件中的文本值

java - 是否有任何 sax 库支持根据某些条件提前退出?