问题标签 [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 投票
1 回答
1621 浏览

java - 如何使用 VTD-XML 获取 ONE 元素的所有命名空间声明?

我正在使用 VTD-XML,并且正在提取 XML 文档的子元素,并且需要检索父 XML 的根元素的所有命名空间声明。我目前正在以下列方式检索所有命名空间声明:

这为我提供了整个文档的所有命名空间声明,但是,有没有一种方法可以检索 ONE 元素的命名空间声明?

0 投票
1 回答
906 浏览

java - Recursive xml in VTD-XML

I have a XML like this:

Is it possible to recover and treat entire XML using Java and VTD-XML?

0 投票
4 回答
13492 浏览

xml - xpath获取整个xml树结构

有没有办法使用 xpath 来获取整个树结构。例如,假设这是 xml

我希望 xpath 获取节点的所有内容,结果应该是

到目前为止,我一直在使用 VTD-XML 和 java 来检索元素。这是我一直在使用的代码。

0 投票
1 回答
1132 浏览

java - 使用 VTD-XML 优化解析 XML 文件的速度

我正在使用 VTD-XML 解析大量 XML 文件。我不确定我是否正确使用了该工具 - 我想是这样,但是解析文件花费了我太长时间。

xml 文件(DATEXII 格式)是 HD 上的压缩文件。解压后它们大约有 31MB 大,包含超过 850.000 行文本。我只需要提取几个字段并将它们存储在数据库中。

我的 XML 文件的上述函数的输出是:

现在实际上没有数据插入到数据库中。现在的问题是我每分钟都会收到一个这些文件。现在总解析时间将近 1 分钟,因为下载文件大约需要 10 秒,而且我需要将内容存储在数据库中,所以我现在正在实时运行。

有什么办法可以加快这个速度吗?我尝试过的没有帮助的事情:

  • 对所有字段使用自动驾驶仪,这实际上使第二步慢了 30000ms
  • 自己解压缩文件并将字节数组解析为VTD,这没有任何区别
  • 使用 BufferedReader readLine() 自己循环文件,但这也不够快

有没有人看到加快速度的可能性,还是我需要开始考虑更重的机器/多线程?当然,每分钟 850.000 行(每天 12 亿行)很多,但我仍然觉得解析 31MB 的数据不应该花一分钟...

0 投票
1 回答
821 浏览

vtd-xml - VTD-XML 异常:命名空间限定异常:前缀属性未限定

我通过 Web 服务接收 XML,并且正在使用旧代码(使用 dom4j)来执行一些 xml 转换。将原始 XML 加载/解析为 VTD-XML (VTDGen) 工作正常,没有抛出异常。但是,在将 xml 加载到 dom4j 后,我注意到一些元素名称空间声明和属性被重新排列。显然,这种重新安排会导致 VTD-XML 抛出以下异常:

异常:命名空间限定异常:前缀属性未限定

行号:101 偏移量:1827

这是原始 XML 中此行号处的元素:

<RR_PerformanceSite:PerformanceSite_1_4 RR_PerformanceSite:FormVersion="1.4" xmlns:NSF_ApplicationChecklist="http://apply.grants.gov/forms/NSF_ApplicationChecklist-V1.1" xmlns:NSF_CoverPage="http://apply.grants.gov/forms /NSF_CoverPage-V1.1" xmlns:NSF_DeviationAuthorization="http://apply.grants.gov/forms/NSF_DeviationAuthorization-V1.1" xmlns:NSF_Registration="http://apply.grants.gov/forms/NSF_Registration-V1 .1" xmlns:NSF_SuggestedReviewers="http://apply.grants.gov/forms/NSF_SuggestedReviewers-V1.1" xmlns:PHS398_CareerDevelopmentAwardSup="http://apply.grants.gov/forms/PHS398_CareerDevelopmentAwardSup_1_1-V1.1" xmlns :PHS398_Checklist="http://apply.grants.gov/forms/PHS398_Checklist_1_3-V1.3" xmlns:PHS398_CoverPageSupplement="http://apply.grants.gov/forms/PHS398_CoverPageSupplement_1_4-V1.4" xmlns:PHS398_ModularBudget="http://apply.grants.gov/forms/PHS398_ModularBudget-V1.1" xmlns:PHS398_ResearchPlan="http://apply.grants.gov/forms/ PHS398_ResearchPlan_1_3-V1.3" xmlns:PHS_CoverLetter="http://apply.grants.gov/forms/PHS_CoverLetter_1_2-V1.2" xmlns:RR_Budget="http://apply.grants.gov/forms/RR_Budget-V1. 1" xmlns:RR_KeyPersonExpanded="http://apply.grants.gov/forms/RR_KeyPersonExpanded_1_2-V1.2" xmlns:RR_OtherProjectInfo="http://apply.grants.gov/forms/RR_OtherProjectInfo_1_2-V1.2" xmlns: RR_PerformanceSite="http://apply.grants.gov/forms/PerformanceSite_1_4-V1.4" xmlns:RR_PersonalData="http://apply.grants.gov/forms/RR_PersonalData-V1.1" xmlns:RR_SF424="http ://apply.grants.gov/forms/RR_SF424_1_2-V1.2" xmlns:RR_SubawardBudget="http://apply.grants.gov/forms/RR_SubawardBudget-V1.2" xmlns:SF424C="http://apply.grants.gov/forms/SF424C-V1.0" xmlns:att="http ://apply.grants.gov/system/Attachments-V1.0" xmlns:codes="http://apply.grants.gov/system/UniversalCodes-V2.0" xmlns:globlib="http://apply .grants.gov/system/GlobalLibrary-V2.0">

这是加载到 dom4j 后的相同元素:

<RR_PerformanceSite:PerformanceSite_1_4 xmlns:RR_PerformanceSite="http://apply.grants.gov/forms/PerformanceSite_1_4-V1.4" xmlns:NSF_ApplicationChecklist="http://apply.grants.gov/forms/NSF_ApplicationChecklist-V1.1" xmlns:NSF_CoverPage="http://apply.grants.gov/forms/NSF_CoverPage-V1.1" xmlns:NSF_DeviationAuthorization="http://apply.grants.gov/forms/NSF_DeviationAuthorization-V1.1" xmlns:NSF_Registration= "http://apply.grants.gov/forms/NSF_Registration-V1.1" xmlns:NSF_SuggestedReviewers="http://apply.grants.gov/forms/NSF_SuggestedReviewers-V1.1" xmlns:PHS398_CareerDevelopmentAwardSup="http:// /apply.grants.gov/forms/PHS398_CareerDevelopmentAwardSup_1_1-V1.1" xmlns:PHS398_Checklist="http://apply.grants.gov/forms/PHS398_Checklist_1_3-V1.3" xmlns:PHS398_CoverPageSupplement="http://apply.grants.gov/forms/PHS398_CoverPageSupplement_1_4-V1.4" xmlns:PHS398_ModularBudget="http://apply.grants.gov/forms/PHS398_ModularBudget-V1.1" xmlns:PHS398_ResearchPlan="http ://apply.grants.gov/forms/PHS398_ResearchPlan_1_3-V1.3" xmlns:PHS_CoverLetter="http://apply.grants.gov/forms/PHS_CoverLetter_1_2-V1.2" xmlns:RR_Budget="http://apply .grants.gov/forms/RR_Budget-V1.1" xmlns:RR_KeyPersonExpanded="http://apply.grants.gov/forms/RR_KeyPersonExpanded_1_2-V1.2" xmlns:RR_OtherProjectInfo="http://apply.grants.gov /forms/RR_OtherProjectInfo_1_2-V1.2" xmlns:RR_PersonalData="http://apply.grants.gov/forms/RR_PersonalData-V1.1" xmlns:RR_SF424="http://apply.grants.gov/forms/RR_SF424_1_2 -V1.2" xmlns:RR_SubawardBudget="http://apply.grants.gov/forms/RR_SubawardBudget-V1.2" xmlns:SF424C="http://apply.grants.gov/forms/SF424C-V1.0" xmlns:att="http://apply.grants.gov/系统/附件-V1.0" xmlns:codes="http://apply.grants.gov/system/UniversalCodes-V2.0" xmlns:globlib="http://apply.grants.gov/system/GlobalLibrary- V2.0" RR_PerformanceSite:FormVersion="1.4">

问题在于新 XML 元素中的属性(偏移 1827,元素末尾):RR_PerformanceSite:FormVersion="1.4"

以下是删除异常的内容: 1. 将此元素的 RR_PerformanceSite xmlns 声明添加到 XML 文档的根元素。2.用原来的元素替换新元素。这似乎让我相信属性/ns 声明的顺序会在解析时影响 VTD。

注意:我使用两个 xml 文档(原始和后 dom4j xml)将 ns 感知的 xml 文档设置解析为“真”。此外,还会为每个 xml、original 和 post-dom4j 创建新的 VTD 对象。

我尝试像原始元素一样将 'RR_PerformanceSite:FormVersion="1.4"' 放在元素的开头,但这并没有消除异常。由于属性位置的变化,错误消息中的偏移量不同。xmlns 声明的顺序是否会影响 VTD?

我查看了 VTDGen 源代码,但无法弄清楚为什么会引发此异常。

为什么 dom4j 会解析新文档而 vtd 无法解析?任何人都可以对此有所了解吗?

0 投票
2 回答
1120 浏览

java - 如何在 vtd-xml 中获取父元素?

我有一个 xpath 查询,我可以获得所有属性及其各自的值

但现在我想知道这些属性属于哪个元素?

这是我的 xml:

和我写的代码:

0 投票
1 回答
199 浏览

vtd-xml - vtd-xml:自动驾驶仪:declareVariableExpr

Java VTD-XML 具有以下 API

我已经成功地将它用于简单的变量绑定,例如:

Autopilot 可以运行类似的表达式

我的问题是:

API 说它将一个变量绑定到一个变量表达式。 如何绑定到变量表达式?绑定到“表达式”的用途是什么?

0 投票
1 回答
193 浏览

vtd-xml - vtd-xml:Autopilot:在 Autopilot 中注册功能

Java VTD-XML 具有以下 API

如何在 VTD-XML 自动驾驶仪中注册功能?

例如,我想评估以下表达式:

我希望 Autopilot 让我注册一个调用的函数getCurrentDateTime()并让我在表达式评估中使用它。

如何在 Autopilot 中注册功能?如果是的话,你能指点我一些例子吗?

问候,

维马尔

0 投票
1 回答
686 浏览

vtd-xml - vtd-xml 替换整个元素

我遇到了奇怪的问题,我在网上找不到任何东西。

我使用 xpath 来定位我的 xml 块,然后将其替换为其他内容,例如:

我使用 XMLModifier 来实际更新令牌(使用 updateToken 方法:]),它适用于属性操作或元素的文本(正文)。

我对样式元素有疑问,我想处理它的主体,然后用指向某个文件的链接替换整个元素。

显然,更新文本标记将导致其中带有链接标记的样式标记。

所以我尝试将导航器移动到样式元素并得到了这个

我还尝试在样式元素之前插入链接元素并将其删除,但是当我尝试保存修饰符的数据时,我从 XMLModifier 得到 ModifyException("Invalid insert/deletion condition detected between offset .. and offset")。这是代码

我尝试使用 remove(long l) 和 remove(int offset, int lengtt) 版本但得到了同样的异常

任何想法

0 投票
2 回答
471 浏览

xml - 有没有办法使用 vtd-xml 在 xml 中找到结束标记

我已经使用令牌根据令牌计数循环所有元素,并看到在我的 xml 结构中,它只有令牌类型 = 5 和令牌类型 = 0 来自这个网络

http://vtd-xml.sourceforge.net/userGuide/6.html

那么有没有办法在 vtd-xml 中找到结束标记

因为,我的 xml 看起来像这样。

我使用 ap.iterate() 循环遍历所有 xml 结构。

我想使用结束标记来指示何时到达 --></entry>将对象添加到当前列表。当它到达 -></list>如果它有外部列表,则将这些列表添加到上层对象。

我希望这个过程像一个库,所以我使用反射来调用方法和对象。

现在,我只有一个问题,程序如何知道相应地添加到哪里。

任何获取结束标记或解析 XML 以使其具有结束标记的方法也是如此。

最好的问候,谢谢。