我有一堆符合相同模式的 XML。我要批量编辑的特定元素仅在每个 XML 文件中出现一次,并且在每个文件中具有相同的 xPath。
e.g. /Valid/HeaderInfo/SoftwareID
我想创建一个脚本/过程,以便我可以替换此特定元素的值(我相信它更准确地称为节点的文本值),并对一组文件夹中的所有 XML 文件执行该更新. 比如现在是:
<SoftwareID>12451245</SoftwareID>
我希望它是
<SoftwareID>53623745</SoftwareID>
反而。
我目前刚刚开始涉足编程领域,以及学习一般的 XML 数据——我需要一些关于如何开始的基本信息。最好的方法是什么?我有 Altova XMLSpy,我知道它有一个脚本组件。但是用特定的编程语言(我目前正在学习 Visual Basic)执行此操作是否更合适,或者是否存在其他一些用于执行这些类型的批量更新的软件?
任何能让我朝着正确方向前进的信息都会很棒!
谢谢!
更新 (06/26/13)
FilingSoftwareId(和更新的元素名称)的 XPath 实际上是:
ValidFiling/FilingHeader/FilingSoftwareId
ValidFiling 是 XML 文档的根。我使用了您提供的内容并进行了相应更新,但是当我在 Altova XMLSpy 中选择此 XSL 文件进行 XSL 转换时,我的结果是我原始 XML 文件的副本。
当第二个包罗万象的模板应用于文档时,是否有可能将 FilingSoftwareID 的更新替换为原始值?
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output omit-xml-declaration="yes" indent="yes" method="xml"/>
<xsl:template match="/ValidFiling/FilingHeader/FilingSoftwareId">
<FilingSoftwareId>
<xsl:text>243523452345</xsl:text>
</FilingSoftwareId>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
再次感谢!