如果前一个元素具有“up”作为“status”元素中“state”属性的值,是否有一种方法可以仅使用 Java SAX 打印“addr”值?
XML是这样的
<host starttime="11111" endtime="2222">
<status state="up" reason="4"/>
<address addr="ABC123" addrtype="1" />
<address addr="AAA" addrtype="BBB" vendor="231" />
</host>
<host>
<status state="down" reason="no"/>
<address addr="ZXC567" addrtype="3" />
</host>
只有当“state”值为“up”时,我才需要打印字符串 ABC123(“addr”属性的值)。
我用来执行此操作的 Java SAX 代码部分是:
public static void main(String[] args) throws Exception {
SAXParser parser = SAXParserFactory.newInstance().newSAXParser();
parser.parse(new File("/tmp/test1"), new DefaultHandler() {
@Override
public void startElement(String uri, String localName,
String qName, Attributes atts) throws SAXException {
if (qName.equals("status")) {
if (atts.getValue(0).contains("up")) {
System.out.println("status= " + atts.getValue(0));
}