gpt4 book ai didi

xml - 用于查找和替换的 Xpath?

转载 作者:数据小太阳 更新时间:2023-10-29 02:23:40 31 4
gpt4 key购买 nike

各位论坛成员,我是 Xpath 新手,有以下问题。比方说,我有 300 个单独的 XML 文件,我需要进行全局文本更改,这可能只会影响 40 个 XML 文件。是否可以使用 Xpath 在所有 300 个 XML 文件中执行查找和替换操作?例如,我需要全局更改的词是这些词,“LBRT Assembly”更改为“LBRS assembly”。 Xpath 是否提供执行此类操作的能力?我知道 Xpath 擅长查询 XML 元素。但是,它是否也可以执行查找和替换操作?可以使用的最好的应用程序是什么,它可以帮助编写复杂的 Xpath 查询命令?任何意见都将受到极大欢迎。提前致谢。

最佳答案

XPath 不能修改 XML 文件。为此,您需要 XSLT 或 XQuery。

如果这真的是一个全局变化(也就是说,如果你想改变这个文本而不考虑它出现的上下文)那么我自己会非常倾向于使用文本编辑器来完成它:这违背了我的建议总是给出在处理 XML 数据时应该使用 XML 工具的说明。但是,如果查找要更改的文本确实取决于 XML 上下文,我会编写一个小的 XSLT 2.0 程序来完成它:它可能大约有十几行。核心是:

(a) 复制元素不变的标准身份模板

<xsl:template match="*">
<xsl:copy-of select="@*"/>
<xsl:apply-templates select="node()"/>
</xsl:template>

(b) 驱动处理的东西:

<xsl:template name="main">
<xsl:apply-templates select="collection('my/dir/?select=*.xml')"/>
</xsl:template>

(e) 为每个输入文档创建新输出文档的模板

<xsl:template match="/">
<xsl:result-document href="{replace(document-uri(.), '/dir/', '/outdir/')}">
<xsl:apply-templates/>
</xsl:result-document>
</xsl:template>

(d) 修改文本节点的模板

<xsl:template match="text()">
<xsl:value-of select="replace(., 'xxx', 'yyy')"/>
</xsl:template>

关于xml - 用于查找和替换的 Xpath?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30825939/

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