削除する必要がある特定の XML ノードを選択できないという問題があります。一部の XML ファイルでは正常に機能する XPath を使用してノードを選択しようとしましたが、より複雑なファイル内のノードの正しい XPath を見つけることができません。
ユーザーが特定のノードを選択し、パスに列挙がなくても正確な XPath を受け取ることができるように、XML ファイルをロードできるフリーウェア ツールを知っている人はいますか?
/root/anything[2]
<-- 残念ながら、要素の数が変わる可能性があるため、そのようなステートメントは使用できません。属性に基づく式が必要です。
この操作用のフリーウェア ツールがない場合、必要なノードを選択する別の方法を知っている人はいますか?
XML サンプル:
ルート ノード: SmsFormData
属性: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" FormatVersion="1.0" xmlns=" http://schemas.microsoft.com/SystemsManagementServer/2005/03/ConsoleFramework"
子ノード:フォーム
属性: Id="some GUID" CustomData="some data" FormType="some type" ForceRefresh="false"
子/子ノード:ページ
子/子/子ノード:ページ
属性: VendorId="VendorName" Id="some GUID" Assembly="dll ファイル名" Namespace="some Namespace" Type="some Type" HelpID="">
この特定のページを選択するための xPath 式は次のようになります。
xPath = /SmsFormData/Form/Pages/Page[@Id="some Guid"]
選択を行うために、次の vbscript コードを使用しています。
Set objDOM = CreateObject("Msxml2.DOMDocument.4.0")
objDOM.async = false
objDOM.load(file)
set objNode = objDOM.selectSingleNode(xPath)
問題は、objNode
オブジェクトが空であることです。ノードが選択されていませんが、なぜですか?