Я работаю с нашим API-интерфейсом Solarwinds, и мой код выбирает узлы, но возвращает ноль. Если я извлекаю из другого источника, код корректно вытягивает узлы. Есть ли что-то в фиде, который мне нужно учитывать? Единственное отличие, которое я вижу, - это кодировка.
Вот фрагмент кода XML:
<?xml version="1.0" encoding="ISO-8859-1"?>
<result created="2020-04-18T15:06:26-05:00" host="www.systemmonitor.us" status="OK">
<items>
<client>
<name>
<![CDATA[Best Client]]>
</name>
<clientid>111111</clientid>
<view_dashboard>0</view_dashboard>
<view_wkstsn_assets>0</view_wkstsn_assets>
<dashboard_username>
<![CDATA[none]]>
</dashboard_username>
<timezone></timezone>
<creation_date>2019-07-02</creation_date>
<server_count>0</server_count>
<workstation_count>2</workstation_count>
<mobile_device_count>0</mobile_device_count>
<device_count>2</device_count>
</client>
</items>
</result>
А вот фрагмент кода VB. net:
Dim myFeed As XmlDocument = AppShared.LoadXMLDocument(feedURL)
Dim myXMLNodeList As XmlNodeList
Dim xmlNode as XmlNode
Console.WriteLine("Connected")
'---select all of the clients in the feed
If Not IsNothing(myFeed.SelectNodes("//client")) Then
dim rmmClientID as Integer = 0
dim clientName as string = 0
dim serverCount as Integer = 0
Dim workstationCount as Integer = 0
dim mobileDeviceCount as Integer = 0
dim deviceCount as Integer = 0
myXMLNodeList = myFeed.SelectNodes("//client")
Console.WriteLine("Has " & myXMLNodeList.Count & " items")
For Each currentXMLNode As XmlNode In myXMLNodeList
Console.WriteLine("Processing row...")
rmmClientID = currentXMLNode.SelectSingleNode("//client").SelectSingleNode("//clientID").Value
Console.WriteLine("ClientID: " & rmmClientID)
Next
Else
Console.WriteLine("No Client Nodes.")
End If
Это не говорит "Нет клиентских узлов", это говорит "имеет 0 пунктов". Я попытался выбрать // элементы, а также // элементы / клиента. Тот же результат.