2

以下は私のxmlファイルの構造です:

<configuration>
  <appSettings>
    <add key="ProductVersion" value="5.5.5"/>
    <add key="LogsDirectory" value="e:\\Logs"/>
  </appSettings>
<configuration>

LogsDirectory の値を取得するために、次のコードを試しています。

configurationFilePath = "e:\conf.xml"
Set xmlDoc = CreateObject("MSXML2.DomDocument.6.0")
xmlDoc.async = false
Call xmlDoc.load(configurationFilePath)

xpath1 = ".//configuration/appSettings/add[@key='LogsDirectory']/@value"
LogsDirectory = xmlDoc.selectSingleNode(xpath1)

しかし、それは必要なオブジェクトとしてエラーを出しています。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

4

XML のエラー チェック スケルトンを使用しない人は、次のように作業します。

Option Explicit

Dim oFS    : Set oFS   = CreateObject("Scripting.FileSystemObject")
Dim sFSpec : sFSpec    = oFS.GetAbsolutePathName(".\19194544.xml")
Dim oXDoc  : Set oXDoc = CreateObject("MSXML2.DomDocument.6.0")
oXDoc.setProperty "SelectionLanguage", "XPath"
oXDoc.async = False
oXDoc.load sFSpec

If 0 = oXDoc.ParseError Then
   WScript.Echo sFSpec, "looks ok"
   Dim sXPath
   For Each sXpath In Array( _
       ".//configuration/appSettings/add[@key='LogsDirectory']/@value" _
   )
       Dim ndFnd : Set ndFnd = oXDoc.selectSingleNode(sXpath)
       If Not ndFnd Is Nothing Then
          WScript.Echo "found |" & ndFnd.xml & "|"
       Else
          WScript.Echo "not found |" & sXPath & "|"
       End If
   Next
Else
   WScript.Echo oXDoc.ParseError.Reason
End If

ロープを使わないバンジージャンプも。

あなたの場合、.ParseError.Reason

The following tags were not closed: configuration, configuration.

検索するドキュメントがない理由を説明します。少なくとも、Set を使用せずに .selectSingleNode() から返されたノードを LogsDirectory に割り当てようとしたときに発生するエラーを回避できます。

于 2013-10-05T08:23:08.330 に答える