gpt4 book ai didi

java - 解析嵌套在其他 XML 值中的 XML 标记

转载 作者:行者123 更新时间:2023-11-29 08:04:24 25 4
gpt4 key购买 nike

我一直在开发一个解析大量 XML 的特定 XML 解析器。

我的问题是我对如何解析嵌套在其他 XML 值中的 XML 标记感到困惑。我的输入文件看起来像这样。

<main>
<step>
<para>Calculate the values from the pool</para>
</step>
<step>
<para>Use these(<internalRef id ="003" xlink:actuate="onRequest" xlink:show="replace" xlink:href="max003"/>) values finally</para>
</step>
</main>

我能够使用 xpath 获取第一步标记的值。我的问题是如何使用 xpath 获取第二步值,或者更确切地说,如何识别新标签何时在值标签内开始。

例如,我的第二步 xpath 返回了这个结果 - 最终使用这些 () 值

我的目标是获得 - 最终使用这些 (max003) 值

ma​​x003 值必须取自 xlink:href

Addition - 我能够通过编写单独的 xpath 获取 id 、 actuate 、 show 的各个值。我的问题是我需要在获取xlink:href ma​​x003 值填充到these 之后和values 之前的括号内strong> 值为 max003 并将其通过线路发送以供显示。 所以我正在寻找一种方法来识别子节点 ID 何时何地开始?一种将其填充在括号内的机制。

最佳答案

这个Xpath表达式的求值:

 concat(/*/step[2]/para/text()[1],
/*/step[2]/para/internalRef/@xlink:href,
/*/step[2]/para/text()[2])

在提供的 XML 文档上(更正为命名空间格式良好):

<main xmlns:xlink="Undefined namespace">
<step>
<para>Calculate the values from the pool</para>
</step>
<step>
<para>Use these(<internalRef id ="003" xlink:actuate="onRequest" xlink:show="replace" xlink:href="max003"/>) values finally</para>
</step>
</main>

产生想要的结果:

Use these(max003) values finally

请注意:您将需要使用您的 XPath API“注册 xlink namespace ”,以便在没有错误的情况下评估此 XPath 表达式。

基于 XSLT 的验证:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xlink="Undefined namespace">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/">
<xsl:copy-of select=
"concat(/*/step[2]/para/text()[1],
/*/step[2]/para/internalRef/@xlink:href,
/*/step[2]/para/text()[2])
"/>
</xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档(如上)时,会计算 Xpath 表达式并将此计算的结果复制到输出:

Use these(max003) values finally

关于java - 解析嵌套在其他 XML 值中的 XML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12275464/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com