【发布时间】:2011-02-11 07:03:14
【问题描述】:
首先我确实看到了这个,但它似乎没有帮助 XPath SelectNodes in .NET
我正在尝试阅读 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。 google.dk/…
-
是的两个,xmlns="schemas.microsoft.com/sqlserver/reporting/2005/01/…" xmlns:rd="schemas.microsoft.com/SQLServer/reporting/reportdesigner" 我必须弄清楚如何合并它,谢谢你的链接