У меня возникли трудности с выражением xPath.
Контекст: я использую документ XML для хранения запросов / имен хранимых процедур в приложении ASP.Я использую служебную функцию для загрузки xmldocument (если он не был загружен ранее) и пытаюсь выбрать набор документов из документа, который соответствует элементу Id.Вот мой документ XML:
<Queries>
<Id>USER001
<Sql>spUsers_GetUserByUserName</Sql>
</Id >
<Id <USER002
<Sql>spUsers_GetUserByEmail</Sql>
</Queries>
Вот код (я использую VB.NET)
Module Utility
private sqlXml as xmldocument
'....other stuff.....
Public Function GetSql(queryId as string) as string
dim qry as string
dim node as XmlNode
if sqlXml is nothing then
sqlXml = new xmldocument
sqlXml.Load (..path)
end if
qry = "//Id['" & queryId & "']" 'xPath to select the Id node = to paramter passed
node = sqlxml.SelectSingleNode(qry) 'set node <Id><Sql></Sql></Id>
return node.SelectSingleNode("//Sql").InnerText 'Return the Sql element value from the Id
End Function
Проблема:
переменная узла только возвращаетпервый элемент.Я проверил, что строка qry
, которая используется для SelectSingleNode
, является правильным значением Id (т. Е. USER002) - однако узел загружается с элементом USER001.Это явно выражение xPath, которое испортилось.Что мне нужно настроить для выражения xPath, чтобы я мог вернуть правильный элемент <Id>
и соответствующий дочерний элемент <Sql>
.
Любая помощь будет оценена.