在没有 DOM 的情况下过滤内存中的 XML 节点?
Posted
技术标签:
【中文标题】在没有 DOM 的情况下过滤内存中的 XML 节点?【英文标题】:Filtering XML nodes in memory without DOM? 【发布时间】:2011-12-27 10:12:12 【问题描述】:给定一个很大的 XML,我希望在内存中的树中拥有部分 XML 结构(这不是 DOM !!) 例如给定
<MAIN>
<A>
<B>1</B>
<C>2</C>
<D>3</D>
<H>7</H>
<I>9</I>
<E>2</D>
</A>
<A>
<B>4</B>
<C>5</C>
<D>6</D>
<H>3</H>
<I>0</I>
<E>3</D>
</A>
</MAIN>
用户选择节点B和H后,我想在内存中拥有
<MAIN>
<A>
<B>1</B>
<C>2</C>
<D>3</D>
<H>7</H>
</A>
<A>
<B>4</B>
<C>5</C>
<D>6</D>
<H>3</H>
</A>
</MAIN>
有时用户想按节点内容过滤,比如所有大于3的B节点等
是否有(SAX?)库来做这样的事情? 最好在 Smalltalk 中,但任何其他语言都可以。
【问题讨论】:
【参考方案1】:VisualWorks 中包含一个 SAX 库。
【讨论】:
该 SAX 库是否支持构建 DOM 子树并对其进行编辑?【参考方案2】:在 Java 领域,使用 JDOM 或 DOM4J(可能还有 XOM),您可以编写自定义构建器来实现您想要的。
DOM4J 的示例
【讨论】:
【参考方案3】:STX 处理器允许以流方式处理大型文档,但在variables 或buffers 中保留(可能已转换)该文档的部分。
【讨论】:
以上是关于在没有 DOM 的情况下过滤内存中的 XML 节点?的主要内容,如果未能解决你的问题,请参考以下文章
在 WPF 中,您可以在没有代码的情况下过滤 CollectionViewSource 吗?