非空IXMLNodeCollection.Count返回0

时间:2019-04-13 09:29:36

标签: xml delphi

我有一个来自第三方的XSD,并且已经使用XML数据绑定工具从中生成类。数据绑定工具不包含前缀,但是我可以分两部分来解决。

  1. n1的{​​{1}}参数中添加前缀TagName会使所有子元素继承任何GetDocBinding的子元素前缀。例如
IXMLNodeCollection
  1. 在任何function NewMYDOCUMENT: IXMLMYDOCUMENT; begin Result := NewXMLDocument.GetDocBinding('n1:MYDOCUMENT', TXMLMYDOCUMENT, TargetNamespace) as IXMLMYDOCUMENT; end; 的{​​{1}}中添加前缀
AfterConstruction

两个步骤都完成后,生成的XML符合第三方的要求与XSD匹配,但是我无法遍历IXMLNodeCollection中的元素。无论子节点有多少,procedure TXMLAllowanceCollection.AfterConstruction; begin RegisterChildNode('n1:Allowance', TXMLAllowance); ItemTag := 'n1:Allowance'; ItemInterface := IXMLAllowance; inherited; end; 都会返回0,即使AllowanceCollection是有效的索引,AllowanceCollection.Count也会引发异常。

如果我从no中取出两个AllowanceCollection.Allowance[X]前缀。如图2所示,X的子节点不具有n1前缀。如果仅删除其中一个,则会出现AllowanceCollection异常。在n1的{​​{1}}参数中包含任何值均无效。

到目前为止,我不得不求助于完全删除EIntfCastError Interface not supported前缀并覆盖NamespaceURI来插入前缀

RegisterChildNode

0 个答案:

没有答案