1

我有一个通用模式,它定义了这样的部分:

<xs:element name="detail">
    <xs:annotation>
        <xs:documentation>
        </xs:documentation>
    </xs:annotation>    

    <xs:complexType>
        <xs:sequence>
            <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:anyAttribute processContents="skip"/>
    </xs:complexType>
</xs:element>

我一天中的大部分时间都在阅读这些东西,但似乎仍然无法理解如何深入了解在 detail 元素下的实际 xml 文档中可以找到的字段。

我知道它可能看起来像这样:

<detail>
   <drawing>
      <name="test"/>
    </drawing>
</detail>

或者

<detail>
   <icon>
      <icon_name="testIcon"/>
      <icon_image="iconImage.jpg"/>
    </icon>
</detail>

xmlbeans 无法知道详细信息元素中的内容,因为它是一个通配符,因此它没有为我提供深入研究这些元素的方法。xmlbeans 站点表明我修改了已读入的文档以将通配符元素向上移动一个级别,但这似乎并不简单。我还可以修改架构以对我的特定代码可能存在的元素进行元素引用。对此有什么想法?

4

1 回答 1

0

由于 detail 元素可以包含任何有效的 XML,因此您只能使用某种通用方式访问内容(XPath、DOM 遍历或类似方式),或者专门尝试将每个子元素与特定模式匹配(最好使用唯一的命名空间)。然后可以将匹配已知模式的子项提供给您最喜欢的从 XML 生成对象的库。

正如您所说,另一种选择可能是指定架构中的每个有效子类型(出于可扩展性目的,可选地在底部使用通配符)。

于 2012-01-10T17:06:22.803 回答