![](/img/trans.png)
[英]Provide schema for xsd:any element while importing WSDL using wsimport
[英]using xsd:any for extensible schema
到目前为止,我一直在通过定义具有“name”和“value”属性的占位符元素来处理扩展 ,如下例所示
<root>
<typed-content>
...
</typed-content>
<extension name="var1" value="val1"/>
<extension name="var2" value="val2"/>
....
</root>
我现在打算切换到使用xsd:any 。 如果你能帮助我选择最佳方法,我将不胜感激
谢谢
<xsd:any processContents="strict">
使人们能够在不更改原始模式的情况下向其XML实例文档添加扩展。 这是它给你带来的重要好处。 <xsd:any>
并不重要。 <xsd:any>
。 这是可以理解的,因为它们没有关于它可能包含什么的信息,所以它们通常会给你一个无类型的占位符。 它是在运行时处理它的应用程序代码。 JAXB特别(RI,至少)是它的一个拳头,但它是可行的。 <xsd:any>
使程序员的生活变得更加困难,但如果你需要支持任意扩展点,这就是这样做的方法。 但是,如果你的扩展名是明确的,并且没有改变,那么它可能不值得刺激因素。 关于第3点
绑定工具通常不能非常优雅地处理。 这是可以理解的,因为它们没有关于它可能包含什么的信息,所以它们通常会给你一个无类型的占位符。 它是在运行时处理它的应用程序代码。 JAXB特别(RI,至少)是它的一个拳头,但它是可行的。
这对应于JAXB中的@XmlAnyElement批注。 行为如下:
@XmlAnyElement - 将所有内容保存为DOM节点
如果使用此批注对属性进行批注,则XML文档的相应部分将保留为DOM节点。
@XMLAnyElement(lax = true) - 将已知元素转换为域对象
通过设置lax = true ,如果JAXB具有与该QName对应的根类型,则它将该块转换为域对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.