すべてが同じスキーマに準拠している XML がたくさんあります。バッチ編集したい特定の要素は、XML ファイルごとに 1 回だけ発生し、これらのファイルのそれぞれに同一の 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 ファイルの複製になります。
2 番目のキャッチオール テンプレートがドキュメントに適用されたときに、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>
再度、感謝します!