0

我尝试在 delphi 中使用 XMLMapper 导入一些有效的模式(用于 xmlspy 和氧气),但出现此错误

“错误通量如果:InfofileType 未知”。

我使用命名空间,这种类型是在另一个文件中定义的。

有没有办法解决这个问题?

(我也尝试使用 Delphi 2010 演示,但仍然无法正常工作)

<?xml version="1.0" encoding="UTF-8" ?> 
- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:if="http://www.gtest.fr/Apps/InfoFile" xmlns:ca="http://www.gtest.fr/Apps/CommandAnswer" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:import namespace="http://www.gtest.fr/Apps/InfoFile" schemaLocation="InfoFile.xsd" /> 
  <xs:import namespace="http://www.gtest.fr/Apps/CommandAnswer" schemaLocation="CommandAnswer.xsd" /> 
- <xs:element name="ServerAnswer">
- <xs:annotation>
  <xs:documentation>Reponse serveur socket</xs:documentation> 
  </xs:annotation>
- <xs:complexType>
- <xs:sequence>
  <xs:element name="InfoFile" type="if:InfoFileType" /> 
  <xs:element name="Command" type="ca:CommandAnswerType" /> 
  </xs:sequence>
  </xs:complexType>
  </xs:element>
  </xs:schema>

在 QC 中报告:http: //qc.embarcadero.com/wc/qcmain.aspx ?d=80124

4

3 回答 3

1

我仍然会尝试获取 Delphi 2010(试用版),看看它是否在那里工作。
我知道在 D2009 和 D2010 那里已经完成了重要的工作。它在导入和包含方面是出了名的糟糕。
现在好多了...
如果你不能解决这个问题,我建议手动编辑模式以删除包含/导入并构建一个没有外部文件的大胖 XSD。它应该工作得更好。
这就是我对一组相当复杂的模式所做的事情,即使是 .Net lib 也会窒息。

更新:您能否尝试用另一个符号替换 if:InfoFile 以避免与 if 保留字发生任何冲突;即搜索'n'替换模式中的_if_或其他任何东西...... XML映射器应该关心这个但是,你知道......

于 2009-12-04T02:46:06.137 回答
0

Eric Thorniley 终于给了我去这里的路。

XML Mapper 似乎没有正确理解命名空间。但是,您可以通过在导入的文件中添加额外的命名空间定义来将其引入生活。我敢肯定,这是不对的。

因此,例如,在 Insurance.xsd 中声明 xmlns:Utils="http://www.gtest.fr/Apps/Utils"

如果将完全相同的定义添加到 Utils.xsd 中,XML Mapper 会正确导入它(我认为!)

XML Spy 很有可能会删除我的修改——当然,Enterprise Architect 完全忽略了它们。

于 2010-01-18T22:56:54.237 回答
0

我希望看到 Eric Thorniley 向您指出的信息,但它不再存在。如果我有邮件的主题,我也许可以在某个存档中找到它。我尝试了谷歌搜索,但我发现的只是这篇文章在不同网站上的重复副本。

谢谢

于 2014-01-06T14:25:51.753 回答