node - xml path c#
selectSingleNode usando vbscript (1)
Debajo está la estructura de mi archivo xml:
<configuration>
<appSettings>
<add key="ProductVersion" value="5.5.5"/>
<add key="LogsDirectory" value="e://Logs"/>
</appSettings>
<configuration>
Estoy intentando seguir el código para obtener valor de 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)
Pero está dando error como objeto requerido.
Cualquier ayuda muy apreciada.
Gracias
Las personas que no usan un esqueleto de comprobación de errores para XML funcionan de la siguiente manera:
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
también haga bungee jumping sin cuerdas.
En tu caso, el .ParseError.Reason
The following tags were not closed: configuration, configuration.
explica por qué no hay ningún documento para buscar. Al menos, esto evita el error que obtendría cuando intente asignar el nodo devuelto por .selectSingleNode () a LogsDirectory sin utilizar Set.