SAX印刷条件

时间:2013-06-01 18:42:37

标签: java xml parsing sax

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

0 个答案:

没有答案