我正在尝试创建一个可以捕获看起来像这样的XML的XML模式:
<tagname description="simple string type attribute">
false <!-- simple boolean type -->
</tagname>
但是我遇到了困难。甚至可以定义一个模式来捕获它,还是我在snipe hunt上?
答案 0 :(得分:36)
你去吧
<xs:element name="tagname">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:boolean">
<xs:attribute name="description" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
这是经过验证的样本
<tagname xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="file:/C:/Untitled2.xsd" description="123">
true
</tagname>
答案 1 :(得分:1)
下面是从您发布的模式生成的JAXB java类的示例。关键是在字段上使用@XmlValue注释(您也可以在字段的getter上使用它但删除XmlAccessorType注释:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = { "value" })
@XmlRootElement(name = "tagname")
public class Tagname {
@XmlValue
protected boolean value;
@XmlAttribute(name = "description", required = true)
protected String description;
public boolean isValue() {
return value;
}
public void setValue(boolean value) {
this.value = value;
}
get and set for description omitted.
以下是来自给定类的编组JAXB XML文档:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tagname description="The Description">true</tagname>
我希望这一补充能够帮助那些正在努力解决同样模糊问题的人。