创建具有特定名称但任意结构的 XSD 元素

问题描述 投票:0回答:1

我正在尝试在 XSD 中创建一个内部元素来呈现不同类型的 XML

所以预期的 XML 结构将是这样的:

<root>
 <something>
 <specificName> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> etc </specificName>
 </something>
</root>

当我使用xs:any时,生成的Java类包含这个

我希望元素的 namespecified,但可以是任何类型。

问题是我尝试在“any”元素中设置的每个元素都是附加,而不是设置,创建此 XML 结构:

<root>
 <something>
 <any> <?xml version="1.0" encoding="UTF-8" standalone="yes"?> etc </any>
 </something> 
</root>

我想要其中一个:

  1. 让 JaxB 以某种方式知道(通过绑定?)元素名称将设置为“specifiedName”
  2. 在反序列化过程中忽略“任何”元素

PS:我知道 xs:anyType 解决了这个问题,但我想特别表明,我将在宽松的进程上下文中为该元素使用任何命名空间

xsd jaxb
1个回答
0
投票

基本上你自己回答了。您需要一个包含 any:

的元素
public class SpecificName {

   @XmlAnyElement(lax = true)
   private Object any;

   ...
}

public class Something {

   @XmlElement
   private SpecificName specificName;

   ...
}

请注意,如您的示例所示,拥有第二个 XML 声明是行不通的。

© www.soinside.com 2019 - 2024. All rights reserved.