【问题标题】:Problem in using stream reader使用流阅读器的问题
【发布时间】:2010-01-06 05:43:27
【问题描述】:

我将 XML 数据作为必须解析的字符串,我正在使用以下代码将 XML 字符串转换为输入源:

StringReader reader1 = new StringReader( xmlstring);
InputSource inputSource1= new InputSource( reader );

我将输入源传递给

文档 doc = builder.build(inputSource);

我也想在另一个解析器类中使用相同的 inputSource1,但我正在关闭流。

我将如何处理这个问题,或者有没有其他方法可以将 XML 数据传递给文件以外的解析器?

【问题讨论】:

  • 您是否要对同一个 XML 文件进行两次解析?您没有告诉我们有关您正在使用的解析器的任何信息,因此我们无法知道它是否可以接受文件以外的任何格式的输入。
  • 也许这只是你粘贴的代码中的一个错字,但是reader1reader 不一样,你应该得到一个编译错误...
  • (值得注意的是,XML 包含一个字符集声明,因此 XML 文件的 String 不是您应该解析的内容。将其保留为八位字节序列。)

标签: java xml parsing


【解决方案1】:

查看JavaDoc,似乎InputSource 并非旨在供多个解析器共享和重用。

字节流和字符流的标准处理是将它们关闭作为解析结束清理的一部分,因此应用程序不应尝试在将这些流交给解析器后重新使用它们。

所以你必须创建一个新的InputSource。如果您真的是从 String 读取数据,那么 I/O 或内存成本无论如何都没有区别。

【讨论】:

  • 你右边的输入源不能重用,我把输入源的用法改成了ByteArrayInputStream in = new ByteArrayInputStream(inputSource.getBytes()); InputSource is = new InputSource(); is.setByteStream(in);传递“是”来解析它的工作正常
猜你喜欢
  • 2013-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多