【发布时间】:2012-09-28 15:58:47
【问题描述】:
我正在尝试使用 vbscript 从 XML 文档中提取名称。
XML 文档结构
<Aliases>
<Alias PartyType="DF" CaseID="000000" NameType=""> Name Name</Alias>
<Alias PartyType="DF" CaseID="000000" NameType=""> Name Name</Alias>
<Alias PartyType="DF" CaseID="000000" NameType=""> Name Name</Alias>
...
</Aliases>
XML 文件可能有 100 行来自多个不同 CaseID 的具有相同名称的行,因为对于我的 vbscript 的这一部分,我试图从所有案例中提取所有 不同 名称,但这里是问题,我不想返回重复项。
有没有办法使用 xPath 表达式执行此操作,或者我应该尝试使用 VBScript 执行此操作?
更新日期
使用下面的答案,我现在收到以下错误
msxml3.dll: 预期令牌 ')' 找到 ':'。
别名/别名[@PartyType='DF' and not(./text() = previous-sibling-->:
我试过了
Aliases/Alias[@PartyType='DF' and not(./text() = preceding::/*text())]
认为应用程序可能正在使用 MSXML.net 而不是 MSXML3 它仍然给了我同样的错误。
???
【问题讨论】:
-
您将其表述为 要么 VBScript 或 Xpath,但我希望您在 VBScript 中使用 MSXML 解析器,不是吗?
-
我不确定,我会这么认为。我正在编写 vb 脚本以从 XML 中提取数据以将其插入到程序中的表单中。使用用 C# 编写的 dll 从 SQL Server 数据库中提取数据,将其插入到应用程序用于存储信息的 XML 中,然后应用程序运行我正在编写的 VBScript 以提取注入的信息。我对大约 3-4 个月前刚开始的应用程序还是很陌生。
-
您不确定?请向我们展示您已经读取数据的相关代码sn-p。
-
我正在标记 FKDev 的答案,因为我相信它会通过 Xpath 查询完成我需要它做的事情。由于周末的原因,我无法在我正在处理的项目中对此进行测试,并且因为我遇到了与该问题无关的项目其他部分的问题。但我几乎可以肯定 FKDev 已经给出了我正在寻找的关于这个问题的答案。
-
应用程序确实使用了 MSXML。