【问题标题】:XSD xs:list confusionXSD xs:列表混乱
【发布时间】:2012-01-28 13:32:45
【问题描述】:

谁能向我解释xs:list 数据类型的用法?这很适合我的应用程序,因为 .xml 文件应该有一个(标签)列表,我需要使用该标签创建对象列表。我的问题是:我是否必须遍历列表中的项目(并用它们填充我的程序中的集合)或者是否有一些自动机制可以用 XML 列表填充集合?如果我必须手动操作,xs:list 和以空格分隔的字符串有什么区别?

我希望我能解决我的问题!

编辑:我使用 Qt 来解析 XML。可能是 SAX 路由。

【问题讨论】:

  • 如何解析 XML 数据?用Java? C#?如果使用 Java、使用 JAXB、DOM 等...?请相应地更新您的问题

标签: xml xsd xml-parsing


【解决方案1】:

如果您使用xs:list,那么如果您使用代码生成器,它将被解析并作为集合/数组数据结构公开。如果你只是使用一个由空格分隔的字符串,那么它将作为一个常规字符串公开,你将负责解析。

区别仅在于您使用基于 xsd 的代码生成器。如果您使用 SAX 或 DOM 等低级 API 进行解析,则没有区别。

【讨论】:

  • Pangea,顺便说一句,你是个绅士(你知道为什么)......请也看看我的帖子 - 因为我们正在一起努力:) - .. . 您忘记提及的一项是验证位...干杯!
  • @PetruGardea 是的,错过了验证...很难记住并添加所有内容以使帖子完整;-)
【解决方案2】:

由于您没有指定特定的处理器(例如 JAXB 或 XSD.EXE 等),因此无法具体说明......尽管作为一般规则,列表(以及与此相关的联合)的支持很差。

在理想情况下,工具会将其视为一个列表,并且生成的代码(在 XML 到代码绑定场景中)应该为您提供一个字段、数组类型,这将为您提供已经解析的内容。在工具不足的地方,您必须手动完成,没有区别。

但是,如果您还进行验证,那么至少列表中的每个项目都会为您整齐地验证;而没有它,您将 - 再次 - 靠自己。

【讨论】:

  • JAXB 支持带有 @XmlList 注释的 xs:list:blog.bdoughan.com/2010/09/jaxb-collection-properties.html
  • 谢谢你,布莱斯;为了清楚起见,我无意暗示 JAXB 不支持 xsd:list/union;我只是列出了可能的处理器......不过,在 JAXB 中,xsd:union 在 1.x 和 2.x 之间的管理方式的变化(很多人没有得到)表明疼痛工具的长度必须经过这个空间... XSD.EXE 仍然(尽管现在已经过时)只提供对 xsd:list 的部分支持。
【解决方案3】:

实际上,QXmlQuery 类正是我想要的。 它的方法bool QXmlQuery::evaluateTo ( QStringList * target ) const 需要一系列xs:string 值并用它们填充target

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-23
    • 2014-10-01
    • 1970-01-01
    相关资源
    最近更新 更多