【发布时间】:2018-03-16 20:29:13
【问题描述】:
嗨,我得到了下面的 xml
<InstanceData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<letter>
<variableBlocks>
<VariableBlockBase xsi:type="ClientVariableBlock">
<FirstName></FirstName>
<LastName></LastName>
<Address></Address>
</VariableBlockBase>
<VariableBlockBase xsi:type="PaymentVariableBlock">
<LastPaymentDate></LastPaymentDate>
<LastPaymentAmount></LastPaymentAmount>
<Address></Address> <!-- repeated (Address appear in the VariableBlockBase above) so this xml should be invalid -->
</VariableBlockBase>
</variableBlocks>
</letter>
</InstanceData>
该 xml 正在动态地构建。
每个<VariableBlockBase> 都有一组或变量(名字、地址等)
我要检查 2 个约束
- “变量”或元素在
<VariableBlockBase>中不重复 - “变量”或元素仅出现在一个
<VariableBlockBase>
在示例 xml 中,<Address> 出现在两个 <VariableBlockBase> 实例(客户端和付款)中
我想创建一个 Linq 查询来获取重复标签的列表。我在 XmlDocument 实例中得到了这个 xml。
【问题讨论】:
-
您的意思是“在
VariableBlockBase元素内”吗?是 allVariableBlockBase元素,还是只是在同一个letter元素中的那些?您需要非常非常明确地提出您的要求。 -
每个变量块都有一组变量,变量不能在多个变量块中,也不能在自己的块中。在示例 xml 中,地址重复。我想检测一下。
-
请编辑您的问题以澄清这一点 - 请注意当前您的 XML 有
variableBlocks,而不是variableBlock。 -
构建 xsd 架构并使用 schems 验证 xml:docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…
标签: c# xml linq-to-xml