我们有一个 WCF 服务,它返回以下内容:
MessageContract
|
+-- List<TopLevelDataContract>
TopLevelDataContract
|
+-- FirstChildDataContract
+-- SecondChildDataContract
+-- ThirdChildDataContract
FirstChildDataContract
|
+-- FieldOne
+-- AnotherField
SecondChildDataContract
|
+-- FieldTwo
+-- YetAnotherField
ThirdChildDataContract
|
+-- FieldThree
+-- AndAnotherField
为了在 SSRS 中充分显示这些数据契约,我们需要将它们展平为表格形式,如下所示:
+----------+--------------+----------+-----------------+------------+-----------------+
| FieldOne | AnotherField | FieldTwo | YetAnotherField | FieldThree | AndAnotherField |
+----------+--------------+----------+-----------------+------------+-----------------+
... rows of data...
然而ElementPath
,实现这一点的表达式/XMLDP 查询让我们望而却步。我们没有高兴地尝试了以下方法:
- 获取 a 类型的所有“行”
FirstChildDataContract
:
<ElementPath IgnoreNamespaces="true"> MessageContract{}/TopLevelDataContracts{}/TopLevelDataContract{}/FirstChildDataContract </元素路径>
- 这将获取所有子项,但采用原始 XML 格式:
<ElementPath IgnoreNamespaces="true"> MessageContract{}/TopLevelDataContracts{}/TopLevelDataContract{@} </元素路径>
- 这与(1)相同:
<ElementPath IgnoreNamespaces="true"> * </元素路径>
ElementPath
如果可能的话,用来实现这一目标的正确表达是什么?
(旁白:为什么微软不直接使用文档齐全且灵活的 XPath,而不是推出他们自己的几乎但不是很像 xpath 查询语言?)