我提供了一个XML文件,一个标签包含多个属性。但是其中一个有时会被跳过。 Exampe:
<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
之前我需要检查它是否存在。
答案 0 :(得分:1)
您可以使用 getIndex(name)或 getIndex(uri,localName)来检查属性是否存在。如果返回-1,则该属性不存在。请参阅getIndex javadoc。
答案 1 :(得分:1)
我的回答建立在Javanator使用SAX Parser的答案上。
您可以通过以下方式检查属性是否为空:
if (item.getAttribute("attribute2").isEmpty()) { }
public boolean isEmpty()
返回:如果length()则返回true 是0,否则为假
询问特定属性是否存在的另一种方法是:
if (item.hasAttribute("attribute2")) { }
boolean hasAttribute(String name)
在此处指定具有给定名称的属性时,返回true element或者有一个默认值,否则为false。
答案 2 :(得分: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()
确保你得到的方法 您在Feed中所需的属性数量
真正可取的是你不应该担心这些和代码,好像你会得到所有。
如果
attributes.getValue("blahblah");
给出null。这意味着它不存在。
并且将null直接填充到数据对象中,并在代码本身中使用它们时采取预防措施。 (空检查等)
希望有所帮助:)