Боюсь, нам нужно увидеть ваше утверждение XPath, но я думаю, что проблема с пространствами имен.
Элементы без префикса находятся в default namespace
, который дляПриведенный выше документ устанавливает для него значение
http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition.
Теперь запросы XPath должны включать эти пространства имен в запросы.Таким образом, selectSingleNode (/elementnameicanseeinnotepad
) ничего вам не даст.
Чтобы добавить пространства имен в запросе, вам придется использовать класс XmlNamespaceManager
(или использовать подробный синтаксис XPath, который я не использую)не рекомендую).
// get an instance
XmlNamespaceManager xMngr = new XmlNamespaceManager();
// associate the prefix ´def´ with the namespace-uri from the xml document we loaded
xMngr.AddNamespace( `def´, http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition);
// associate the prefix ´rd´ (same as used in document) with the namespace-uri from the xml document we loaded
xMngr.AddNamespace( `rd´, http://schemas.microsoft.com/SQLServer/reporting/reportdesigner);
// use the prefix(s) in the XPath query
xDoc.DocumentElement.SelectSingleNode(´/def:elementnameiseeinnotepad´, xMngr );
Надеюсь, это поможет.