【问题标题】:How to capture an XML node while parsing with SAX如何在使用 SAX 解析时捕获 XML 节点
【发布时间】:2011-05-16 01:19:54
【问题描述】:

我正在开发一个 Java Web Start 分发应用程序。它使用配置 XML 来定义如何为客户端提供资源。在请求期间会生成一些资源。我正在使用自定义 SAXParser 处理程序处理主配置文件。

在配置文件中,我想添加一个嵌入的 XML 定义部分,其中包含可服务 XML 文档的根节点作为子节点。

例如:

<Resources>
  <!-- other resource definitions -->
  <EmbeddedXMLResource mapsForRequest="embedded.xml">
    <HiThere>
      <ThisIsAnEmbeddedXMLDocument/>
    </HiThere>
  </EmbeddedXMLResource>
  <!-- ... -->
</Resources>

我想知道是否有任何方法可以将 &lt;HiThere&gt; 节点读取到 DOM 文档中,或者至少将 &lt;EmbeddedXMLResource&gt; 的内部内容捕获到跳过 SAX 处理的字符串中?

我考虑将嵌入的内容放入 CDATA 部分。这样我可以将嵌入的 XML 作为文本节点读取,但我会在嵌入节点的编辑器中丢失语法高亮显示。

【问题讨论】:

  • 为什么要使用 SAX 解析器开始? SAX 对于大型文档的内存效率很高,但对于配置文件来说,它是多余的,并且比其他各种 API 更难使用。
  • 无论如何我都必须遍历整个 XML,因为我正在从节点构造不同的类。我认为 SAX 解析器对此更好。
  • 你看过vtd-xml吗?它似乎更合适

标签: java xml dom saxparser


【解决方案1】:

也许……

  1. 在 startElement HiThere 使用定位器获取文件中的起始位置
  2. 在 endElement HiThere 上也可以获取结束位置。
  3. 用其他Reader打开xml资源,将相关部分提取为字符串,以此类推。

有趣。

【讨论】:

  • 我没有找到更简单的解决方案,所以我接受你的回答。虽然没有尝试过,但改写为使用 DOM 解析器。无论如何,谢谢。
猜你喜欢
  • 2012-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-17
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 2023-03-10
相关资源
最近更新 更多