我有这样的架构:
<xsd:complexType name="ContentType" mixed="true">
<xsd:annotation>
<xsd:documentation><![CDATA[
The content type is a broad base type allowing any content.
]]></xsd:documentation>
</xsd:annotation>
<xsd:complexContent>
<xsd:extension base="BaseContentType">
<xsd:sequence>
<xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##any" processContents="lax"
/>
</xsd:sequence>
<xsd:attribute name="orientation" type="OrientationEnum" use="optional"
default="portrait">
<xsd:annotation>
<xsd:documentation><![CDATA[
The @orientation attribute is used to specify a "landscape"
orientation for the published form. This is primarily used
for schedules or for tables.
]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
我使用xjc命令行工具从上面的模式生成Java类,并按如下方式生成类:
public abstract class BaseContentType {
@XmlMixed
protected List<Serializable> content;
@XmlAttribute(name = "id")
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected String id;
和
public class ContentType
extends BaseContentType
{
@XmlMixed
@XmlAnyElement(lax = true)
@OverrideAnnotationOf
protected List<Object> contentOverrideForContentType;
当我取消编组时,所有嵌套的xml元素都会填充在contentOverrideForContentType
对象的列表ContentType
中,并且所有文本元素都会填充在content
的{{1}}列表中}。
如何确定文本元素相对于嵌套元素的顺序并构造整个文本?
我试图在BaseContentType
中获取整个文本,我必须查看顶级文本和所有嵌套标记的文本并将它们全部组合(这是我需要知道的顺序)。有没有更好的方法来从ContentType
中提取所有文本?
谢谢!
修改 这与this问题有关。
答案 0 :(得分:0)
如果在特定的jaxB类上声明propOrder,则可以指定对象在xml中出现的顺序
e.g.
@XmlType(propOrder = {
"firstObjectName",
"fsecondObjectName"
})
注意:使用propOrder时,必须将对象中的所有元素添加到propOrder中。
答案 1 :(得分:0)
我有同样的问题,我发现元素将按照元素添加到列表的顺序排序...这假设您使用的是有序列表(var sampleClosure = { [weak self] in
guard let strongSelf = self else{
return
}
strongSelf.doSomething()
strongSelf.doOtherThings()
}
, List
...)