问题标签 [vtd-xml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1521 浏览

java - VTD-XML:如何获取当前元素的标签名称?

VTDNav 文档中,我看到了获取属性值、获取元素文本值的方法,但我真的找不到,如何获取当前元素的标签名称?

0 投票
1 回答
1135 浏览

xml - VTD-XML 2.11 XPath 表达式 count() 失败并出现异常 com.ximpleware.XPathEvalException: Function Expr can't eval to node set

count(//b)使用 VTD-XML 2.11 (Java) API,在评估XML 文档上的 XPath 表达式时<a><b/><b/></a>,得到的结果不是2.0,而是失败并出现以下异常:

这是一个重现问题的非常简单的测试用例:

看起来 count() 函数不能用作 VTD-XML 的 XPath 表达式的开头,尽管它是一个有效的 XPath 1.0 表达式?

任何提示将不胜感激。

0 投票
2 回答
1482 浏览

xpath - XPath 1.0:选择所有具有给定父节点的子节点,如果父节点没有这样的子节点,则选择空?

使用 XPath 1.0 和下面的 XML,我如何选择所有具有“b”父级的“c”节点,如果“b”父级没有“c”节点,则选择“”,即{"c1", "", "c3"}作为结果节点-设置(按文档顺序)?

我正在使用 VTD-XML 2.11 (Java),我正在寻找一个 XPath 评估,它将返回上述结果而无需循环。

我浏览了问题并找到了一些有趣的指针,例如 Oliver Becker 的方法,但到目前为止我还没有找到解决方案。

任何帮助,将不胜感激。

谢谢。

0 投票
1 回答
913 浏览

vtd-xml - VTD-XML 创建 XML 文档

我对如何做到这一点有点困惑,所有文档/示例都显示了如何阅读和编辑 xml 文档,但似乎没有任何明确的方法可以从头开始创建 xml,我宁愿不必发货我的程序带有一个虚拟 xml 文件,以便对其进行编辑。有任何想法吗?谢谢。

0 投票
1 回答
141 浏览

xml - 意外的 NodeRecorder 行为

给定以下 XML 文档:

我发出一个 XPath 来导航到<PartyName>节点,然后我想发出第二个 XPath 来获取所有<Name>节点,并记录它们的位置。

出于某种原因,NodeRecorder.iterate()即使节点被正确记录,我也立即返回 -1,我调用了resetPointer(),并且我正在向前移动。我有其他具有这种逻辑(但不同的 XPath)的文档有效,但这个不是。有任何想法吗?

演示代码:

输出:

编辑:刚刚尝试了一个嵌套较少的修改文档,并且这个有效(将partyNameXPath更改为“PartyName”),问题似乎与深度相关:

输出:

0 投票
0 回答
364 浏览

java - VTD-XML 大文件拆分 - 内存不足

我看到 VTD-XML parseGzip() 将完整的文件加载到内存中,从而导致 OutOfMemory。

我的 Eclipse -Xms20m 和 -Xmx100m 和 Gzipped Xml 文件大小为 50MB。我正在使用的示例代码如下,任何摆脱内存限制的命中都值得赞赏 VTDGen vg = new VTDGen();

0 投票
1 回答
893 浏览

vtd-xml - 使用 VTD-XML 查找给定元素的命名空间

对于我的应用程序,我只需要确定根节点的命名空间,所以理想情况下我想执行一个操作来获取这个命名空间。

/*/namespace::*我的代码使用 XPath 来获取所有声明的命名空间(

我确定我在这里遗漏了一些明显的东西,但是获取给定元素的名称空间的最佳方法是什么,因为 xmlns: 属性不在 getAttrValNS 中考虑?

是否有一个简单的 XPath 只会给我根节点的名称空间,而不是根节点上声明的所有名称空间?

0 投票
1 回答
2483 浏览

java - 逐条比较两个非常大的 XML 文件的最佳方法

我有两个大型 XML 文件(3GB,80000 条记录)。一个是另一个的更新版本。我想确定哪些记录已更改(已添加/更新/删除)。文件中有一些时间戳,但我不确定它们是否可信。与文件中的记录顺序相同。

这些文件太大而无法作为 XML 加载到内存中(即使是一个,也不要介意两者)。

我正在考虑的方式是在记录级别的第一个文件中使用 ID 的内存映射对内容偏移量进行某种解析/索引,然后流式传输第二个文件并使用随机访问来比较那些记录两者都存在。这可能需要 2 或 3 次通过,但没关系。但是我找不到可以让我这样做的简单库/方法。带有 VTDNavHuge 的 vtd-xml 看起来很有趣,但我无法理解(从文档中)它是否支持基于预保存位置的随机访问重新访问和加载记录。

Java 库/解决方案是首选,但 C# 也是可以接受的。

0 投票
1 回答
336 浏览

vtd-xml - VTD xml 的哪些组件是线程安全的?

使用 VTD 2.11

VTDGen 可以初始化一次并被多个线程使用吗?

例如,我想在 servlet 中使用它,以便 VTGen 在 servlet 初始化时初始化一次,然后每个请求都会解析收到的任何文档。

与 AutoPilot 相同,我想我可以设置一次 XPATH,然后在每次新导航时继续重新绑定它?

0 投票
1 回答
428 浏览

vtd-xml - VTD 自动驾驶仪可以是线程安全的吗?

使用 Java 2.11 版本。我正在基于 CD 目录数据绑定示例构建一个 xml 绑定组件。我有一个相当复杂但相当小的文档,大约 2000 字节。而且 AutoPilot.bind() 似乎很慢......

硬件 = 3GH 8 核英特尔

平均解析时间约为 80000 纳秒。

现在,如果您将 Autopilot 的创建移出循环,则平均解析时间为 10000 纳秒。

当然,这很有效,因为我们一遍又一遍地解析同一个文档。现在想象一下像 servlet 这样的服务器场景,其中每个请求都解析接收到的 XML 文档。如果我们可以重复使用自动驾驶仪而不是创建一个新的自动驾驶仪,那就太好了。

我记得在某个地方阅读过创建一个自动驾驶仪池,但这并不好玩,尤其是在您拥有十几个自动驾驶仪的情况下。