当属性不存在时,元素#getAttribute不返回默认值

时间:2017-06-23 15:33:52

标签: java xml xsd

我有以下XML文件:

<el id="el1">content</el>

我的文件中定义上述元素的部分如下:

<xsd:element name="el" type="myns:el" />

<xsd:simpleType name="state">
    <xsd:restriction base="xsd:string">
        <xsd:enumeration value="enabled" />
        <xsd:enumeration value="disabled" />
    </xsd:restriction>
</xsd:simpleType>

<xsd:complexType name="el">
    <xsd:attribute name="id" type="xsd:string" use="required" />
    <xsd:attribute name="state" type="myns:state"
        default="enabled" />
</xsd:complexType>

我的Java代码应该获得state的默认值,如下所示:

Element e = (Element) ns.getElementsByTagName("el").item(0);
System.out.println(e.getAttribute("state"));

如果我没有在XML文件中设置state属性,则上面的代码始终会打印一个空字符串。为什么会这样?根据{{​​3}},getAttribute返回

  

作为字符串的Attr值,或者该属性的空字符串   没有指定或默认值。

我的问题是:为什么在未指定值时,getAttribute是否会返回默认值?

0 个答案:

没有答案