Сначала я видел это, но это не похоже, чтобы помочь XPath SelectNodes in .NETXPath и SelectNodes Метод
Я пытаюсь прочитать Defination отчет SSRS.
ReportingService report = new ReportingService();
report.Credentials = System.Net.CredentialCache.DefaultCredentials;
string x = new System.Text.UTF8Encoding().GetString(
report.GetReportDefinition(ReportName));
//Remove a Character at the beginning of the document -- Char 65279
x = x.Replace(x.Substring(0, 1), "");
XmlDocument xml = new XmlDocument();
XmlNamespaceManager ns = new XmlNamespaceManager(xml.NameTable);
// This appears to be a reserved default?
//ns.AddNamespace("xmlns","http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition");
ns.AddNamespace("xmlns:rd","http://schemas.microsoft.com/SQLServer/reporting/reportdesigner");
xml.LoadXml(x);
Теперь я ищу для узла запроса, который должен быть под
Report
...
DataSets
DataSet
Query
Теперь, если я смотрю на некоторые переменные
xml.Name = "#document"
xml.DocumentElement.Name = "Report"
xml.DocumentElement.ChildNodes[12].Name = "DataSets"
xml.DocumentElement.ChildNodes[12].ChildNodes[0].Name = "DataSet"
xml.DocumentElement.ChildNodes[12].ChildNodes[0].ChildNodes[1].Name = "Query"
Но проблема пытается несколько вещей, которые я не может попасть в этот узел DataSets или в любые подносы. Пример
xml.DocumentElement.SelectNodes(".//DataSets",ns);
xml.DocumentElement.SelectNodes("DataSets",ns);
xml.SelectSingleNode("//Report/DataSets",ns);
xml.SelectSingleNode("//Query",ns);
Оба возвращают null, что я делаю неправильно.
отредактированных с помощью driis КОНСУЛЬТАЦИЯ
Является ли документ XML с использованием пространств имен? В этом случае вам нужно включить пространство имен для вашего XPath, возможно, используя XmlNamespaceManager. http://www.google.dk/search?sourceid=chrome&ie=UTF-8&q=XMnnamespacemanager – driis
Да два, xmlns = "http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition" xmlns: rd = "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" Мне нужно выяснить, как включить это, спасибо за ссылку – Mike