0

如果前一个元素具有“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));
                }
4

0 回答 0