1

我给了一个 XML 文件,一个标签包含许多属性。然而,其中一个有时会被跳过。示例:

<data>
    <item attribute0="value 0" attribute1="value 1" attribute2="value 2">
    <item attribute0="value 0" attribute1="value 1">
    <item attribute0="value 0" attribute1="value 1" attribute2="value 2">
</data>

我正在使用 SAX 解析器来处理这个文件,并且在一个startElement方法中我获取了所有属性的值,但在获取之前attribute2我需要检查它是否存在。

4

3 回答 3

1

您可以使用getIndex(name)getIndex(uri, localName)检查属性是否存在。如果它返回 -1,则该属性不存在。请参阅getIndex javadoc

于 2012-09-30T12:41:21.750 回答
1

我的答案建立在 Javanator 的答案之上,使用 SAX Parser。

您可以通过以下方式检查属性是否为空:

if (item.getAttribute("attribute2").isEmpty()) { }

公共布尔 isEmpty()

返回:如果 length() 为 0,则返回 true,否则返回 false

询问是否存在特定属性的另一种方法是:

if (item.hasAttribute("attribute2")) { }

boolean hasAttribute(字符串名称)

如果在此元素上指定了具有给定名称的属性或具有默认值,则返回 true,否则返回 false。

于 2018-01-18T16:31:30.903 回答
0

这个链接是 SAXParser 的一个很好的例子

http://java-samples.com/showtutorial.php?tutorialid=152

在 startElement 委托中,我们通常去读取 Attributes(org.xml.sax.Attributes)

//Event Handlers
public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
 // Read Attributes Here    
}

首先你也可以找

attributes.getLength() 

确保您是否在提要中获得所需数量的属性的方法

真正可取的是,您不应该担心这些和代码,就好像您会得到所有。

如果

 attributes.getValue("blahblah"); 

给出空值。这意味着它不存在。

并且您将 null 直接填充到您的数据对象中,并在代码本身中使用它们时采取预防措施。(空检查等)

希望能帮助到你 :)

于 2012-09-30T12:47:53.407 回答