私はこのようになりTXTとXMLがあります解析するXMLデータ
一時-4.txt
1907| 233845| 4187| 4668| 5471|
VendorConfig.xml
<?xml version="1.0" encoding="utf-8" ?>
<Vendors>
<Vendor>
<SourceID>210986|</SourceID>
<SourceName>Rise Commercial Services|SPRING-330RAYFO</SourceName>
<DestName>Rise Commercial Services|SPRING-330RAYFO</DestName>
</Vendor>
<Vendor>
<SourceID>1907|</SourceID>
<SourceName>Franklin Machine Products Inc|LUMBER-10MTHOL</SourceName>
<DestName>Franklin Machine Products Inc1907|</DestName>
</Vendor>
<Vendor>
<SourceID>233845|</SourceID>
<SourceName>Coastline Electric Co Inc233845|</SourceName>
<DestName>Coastline Electric Co Inc233845|</DestName>
</Vendor>
</Vendors>
を
TXTファイル内の各広告申込情報をループし、VBScriptを使用してVendorConfig.xmlにそれが存在するかどうかを確認する必要があります。 SourceIDとしてXMLに存在する場合は、XMLから追加情報を追加する必要があります。 SourceIDとしてXMLに存在しない場合は、エラーメッセージを追加する必要があります。私はこれまでのところ、次のようになりましたが、XMLパーサは、任意のマッチを返すように見えないし、私はその理由を把握することはできませんもの:
VBSCRIPT
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load("C:\myAbsolutePath\VendorConfig.xml")
If objXMLDoc.parseError.errorCode <> 0 Then
MsgBox ("XML connection error detected.")
End If
Set Root = objXMLDoc.documentElement
Set NodeList = Root.getElementsByTagName("Vendor")
Dim AddVendorDetails, InputFile, FSO, oFile, strTempSourceIDs
InputFile = "C:\myAbsolutePath\temp-4.txt"
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oFile = FSO.OpenTextFile(InputFile)
strTempSourceIDs = oFile.ReadAll
oFile.Close
Dim splitCounter
Dim splitCatcher
Dim IDtest
SplitCatcher = Split(strTempSourceIDs, vbCrLf)
For splitCounter = 0 To UBound(SplitCatcher)
IDtest = SplitCatcher(splitCounter)
For Each i In NodeList
If IDtest = i.getElementsByTagName("SourceID")(0).nodeValue Then
Dim IDnode
Dim Sourcenode
Dim Destnode
Set SourceID = i.getElementsByTagName("SourceID")(0)
Set SourceName = i.getElementsByTagName("SourceName")(0)
Set DestName = i.getElementsByTagName("DestName")(0)
If SourceID.nodeValue <> "" Then
IDnode = SourceID.nodeValue
Else
IDnode = "ERROR:Undefined ID"
End If
If SourceName.nodeValue <> "" Then
Sourcenode = SourceName.nodeValue
Else
Sourcenode = "(No Source Name in config files)"
End If
If DestName.nodeValue <> "" Then
Destnode = DestName.nodeValue
Else
Destnode = "(No Dest Name in config files)"
End If
AddVendorDetails = IDnode & vbCrLf
AddVendorDetails = AddVendorDetails & "SourceName: " & Sourcenode & vbCrLf
AddVendorDetails = AddVendorDetails & "DestName: " & Destnode & vbCrLf
If SourceID.nodeValue <> "" Then
MsgBox (AddVendorDetails)
End If
strTempSourceIDs = Replace(strTempSourceIDs, IDnode, AddVendorDetails)
End If
Next
Next
strTempSourceIDs = "######################## " & WeekdayName(Weekday(Date)) & Date & " ########################" & vbCrLf & strTempSourceIDs
MsgBox (strTempSourceIDs)
これはデバッグに役立つ最初のステップでしたが、半日以上の作業の後、本当の問題は ".nodeValue"ではなく ".text"を使用しなければならないことでした。また、XMLで文字列が見つからないときは何もしないので、エラーを適切に処理するために再フォーマットする必要がありました。 – Nosajimiki