私はVBscriptを使用しようとしています。 (私はVBScriptにうまくいかず、実際には数年間使用していませんが、現在取り組んでいる環境で動作する数少ないツールの1つです。 Powershellは利用できる他のツールですが、Powershellでの経験はあまりありません。また、カップルポイントのタスクにしか使用していません)。VBScript:重複したノード名を持つXMLファイルの更新/修正 - 入力:TXTおよびXML - 出力:XML
問題点: 私は2つの入力ファイルTEXTとXML 新しい出力ファイルが1つあります。 テキストファイルのデータがXMLファイルの更新に使用されます。
ファイル1:テキスト
! uninteresting text
! uninteresting text
! uninteresting text
! V-1: This text discusses this vulnerability number.
All of this text is important, but it only applies to #1.
It does not apply to #2, or #3.
!
! V-2: This text discusses vulnerability #2.
It should be noted that it is multiple lines.
! V-3: This text discusses the 3rd vulnerability.
!
!
! __ ???
! V-4: This text discusses the 4th vulnerability
There is other text here, that goes on and on,
talking about this 4th vulnerability.
It may or may not be important to you.
EOF
がファイル2:
ファイル3:XML
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LIST>
<ASSET>
<ASSET_TYPE></ASSET_TYPE>
<HOST_NAME></HOST_NAME>
<HOST_IP></HOST_IP>
</ASSET>
<AUDIT>
<iAUDIT>
<AUDIT_INFO></AUDIT_INFO>
<VULN>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-1</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA></ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Explanation</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>This is a vulnerability.</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Documentable</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>false</ATTRIBUTE_DATA>
</AUDIT_DATA>
<FINDING_DETAILS>: This text discusses this vulnerability number.
All of this text is important, but it only applies to #1.
It does not apply to #2, or #3.
!
! </FINDING_DETAILS>
<COMMENT />
</VULN>
<VULN>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-2</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA></ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Explanation</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>This is a vulnerability.</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Documentable</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>false</ATTRIBUTE_DATA>
</AUDIT_DATA>
<FINDING_DETAILS>: This text discusses vulnerability #2.
It should be noted that it is multiple lines.
! </FINDING_DETAILS>
<COMMENT />
</VULN>
<VULN>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-3</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA></ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Explanation</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>This is a vulnerability.</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Documentable</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>false</ATTRIBUTE_DATA>
</AUDIT_DATA>
<FINDING_DETAILS>: This text discusses the 3rd vulnerability.
!
!
! __ ???
! </FINDING_DETAILS>
<COMMENT />
</VULN>
<VULN>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-4</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA></ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Explanation</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>This is a vulnerability.</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Documentable</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>false</ATTRIBUTE_DATA>
</AUDIT_DATA>
<FINDING_DETAILS>: This text discusses the 4th vulnerability
There is other text here, that goes on and on,
talking about this 4th vulnerability.
It may or may not be important to you.</FINDING_DETAILS>
<COMMENT />
</VULN>
</iAUDIT>
</AUDIT>
</LIST>
XMLファイル
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LIST>
<ASSET>
<ASSET_TYPE></ASSET_TYPE>
<HOST_NAME></HOST_NAME>
<HOST_IP></HOST_IP>
</ASSET>
<AUDIT>
<iAUDIT>
<AUDIT_INFO></AUDIT_INFO>
<VULN>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-1</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA></ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Explanation</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>This is a vulnerability.</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Documentable</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>false</ATTRIBUTE_DATA>
</AUDIT_DATA>
<FINDING_DETAILS />
<COMMENT />
</VULN>
<VULN>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-2</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA></ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Explanation</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>This is a vulnerability.</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Documentable</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>false</ATTRIBUTE_DATA>
</AUDIT_DATA>
<FINDING_DETAILS />
<COMMENT />
</VULN>
<VULN>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-3</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA></ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Explanation</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>This is a vulnerability.</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Documentable</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>false</ATTRIBUTE_DATA>
</AUDIT_DATA>
<FINDING_DETAILS />
<COMMENT />
</VULN>
<VULN>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-4</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA></ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Vuln_Explanation</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>This is a vulnerability.</ATTRIBUTE_DATA>
</AUDIT_DATA>
<AUDIT_DATA>
<VULN_ATTRIBUTE>Documentable</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>false</ATTRIBUTE_DATA>
</AUDIT_DATA>
<FINDING_DETAILS />
<COMMENT />
</VULN>
</iAUDIT>
</AUDIT>
</LIST>
私は、この出力ファイルを作成したいですこれはどのようにVBScriptで行うことができますか?
私はいくつかの参考文献を見つけましたが、XMLでV-1、V-2、V-3、V-4を取得するにはどうすればよいですか。 AUDIT_DATAは複数回使用されており、私が望むものを取得する方法を理解することはできません。正しいものを掴むことなく、私はFINDING_DETAILを更新することができません。
脆弱性番号の第1番目または第n番目の発生を把握したくないため、V番号を特定できるようにしたいと考えています。この特定のケースでは、ファイル内のAUDIT_DATAの最初のインスタンスであり、V-番号はXMLファイル内で順番に並んでいます(任意の場合)。
他の誰かがこれまでに同様の問題を抱えていて、助けてくれることを望んでいます。
私はこれらの特定の参照リンクを見つけましたが、実際の解決策に同化するためにVBScriptで十分な経験はありません。
はMicrosoftのドキュメントには、何らかの理由でVisual Basicの例を提供するのが好き、私は、私は、Visual Studioなしでこれを実行することができますかわからない(私は持っていません。)
これらは類似しているが、そうではありません私が持っている同じ問題:
VBScript to modify an Element (of many, with same Element names but with different Attributes)?
Locate XML node with specific attribute and change it
reading xml file with vbscript
これは非常に似ていますが、VB.netがある、ないのVBScript:
Parsing XML file with nodes of same name with VB.NET
は、これは私の現在のコードですが、それは解決策の近くにどこにもいないので、私はそれがショー以外のものをしてわからないんだけどソリューションから何マイルも離れています。
Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load("C:\scripts\audit\original.xml")
WScript.echo "ShowAllVULN_ATTRIBUTENodes"
set colVuln_Attribute = xmlDoc.selectNodes ("/LIST/AUDIT/iAUDIT/VULN/AUDIT_DATA/VULN_ATTRIBUTE")
For Each objNode in colVuln_Attribute
WScript.Echo objNode.Text
Next
WScript.echo "Show All Attribute Data"
set colAttribute_Data= xmlDoc.selectNodes ("/LIST/AUDIT/iAUDIT/VULN/AUDIT_DATA/ATTRIBUTE_DATA")
For Each objNode in colAttribute_Data
WScript.Echo objNode.Text
Next
'これはXMLでできることの範囲です。
'私はこの問題に取り組んでいたと思っていましたが、私はそれが些細なことだと思っていたのですが、あなたの経験とスキルのレベルによって決まります。 '最終結果はこれです: ' XMLの各V番号について、FINDING_DETAILSを一致するV番号の複数行のテキストに置き換えます。 「 」私は、このXMLデータを参照したい:
' V-1, FINDING_DETAILS
' V-2, FINDING_DETAILS
' V-3, FINDING_DETAILS
' V-4, FINDING_DETAILS
「私は、テキストファイルの入力を表すために、このようなテーブルを構築したい: 」(。私もこの部分には開始されていない)
次に、Vナンバーを主キーとして使用し、FINDING_DETAILSを更新する方法が考えられます。
ご注意: 私はそれが負荷に失敗する原因とXMLの2つの誤字修正:私はちょうどテキストの両方を扱うことをお勧め スタンドアロン= yesの
XML VBScriptの重複したノード名のXPath
私は混乱しています。コーディングソリューション全体や、XMLを検索して更新する部分だけについて助言を求めていますか?すでに書いたコードを分かち合うことができますか? –
コメント: 1.私はコーディングソリューション全体についてアドバイスが必要です。私はVBScriptをわざわざ私の目的地に近づけることはできません。 これは私がしたいことです: - テキストファイルをv-numbersと次の複数行のテキストを含む何らかの種類の配列や表にインポートします b - 一致するfinding_detailsノードを参照してください対応するV番号 c - 各V番号について、一致するfinding_detailsをテキストファイルの複数行テキストで更新します。私は質問を編集し、詳細を追加し、XMLに修正を加えました。 –