繁体   English   中英

具有报告服务名称空间枚举的XML没有产生任何结果

[英]XML with reporting services namespaces enumeration yielded no result

我有一个显然包含XML的.rdl文件来生成报告。 我想搜索这个XML,在报告中查找不同的信息。 XML的开头是这样的:

<?xml version="1.0" encoding="utf-8"?>
<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns:cl="http://schemas.microsoft.com/sqlserver/reporting/2010/01/componentdefinition" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition">
  <Author>© Piet</Author>
  <AutoRefresh>0</AutoRefresh>
  <DataSources>
    <DataSource Name="DW_Tables">
      <DataSourceReference>DW_Tables</DataSourceReference>
      <rd:SecurityType>None</rd:SecurityType>
      <rd:DataSourceID>84cf022a-c58e-4286-8bc8-bca2c0358206</rd:DataSourceID>
    </DataSource>
  </DataSources>
.... etc

现在我想要所有DataSources并使用此代码:

 var xmlnodes = xmlDoc.Root.Descendants("DataSources")
                var result = from c in xmlnodes
                             select new
                             {
                                 datasource = (string)c.Element("DataSource").Value
                             };

这段代码在我的许多具有不同命名空间的XML文件中起作用。例如:

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ToolsVersion="2.0">
  <DataSources>
    <ProjectItem>
      <Name>DW_Tables.rds</Name>
      <FullPath>DW_Tables.rds</FullPath>
    </ProjectItem>
    <ProjectItem> 

但对于带有reportingservices名称空间的rdl,它似乎没有任何作用。 每当我尝试查看后代时,我都会收到消息:空“枚举没有结果”字符串“

我尝试过很多东西但是甚至

var descendants = xmlReportDoc.Root.Descendants("Reports");

不会回馈任何后代。 我认为它与名称空间有关,但我不知道它是什么以及如何使用它。 我已经尝试在我的代码中声明命名空间,但这似乎也没有用。

任何人都可以帮助我吗?

您正在努力解决的所有元素都在默认命名空间中 这由xmlns="..."属性表示。

使用它,你会得到一些结果:

XNamespace ns = "http://schemas.microsoft.com/sqlserver/reporting/2010/01/reportdefinition"
var sources = xmlDoc.Descendants(ns + "DataSources");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM