Как извлечь значения внутренних элементов с помощью SAXParser - PullRequest
0 голосов
/ 29 ноября 2011

У меня есть XML-файл, как показано ниже:

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
<RULES>
    <RULE DESCRIPTION="" DOMAIN="CAE" NAME="Filter1 " TYPE="FILTER">
        <ATTRS>
            <ATTR RULE_NAME="myFilter1" />
        </ATTRS>
    </RULE>

    <RULE DESCRIPTION="" DOMAIN="CAE" NAME="Skip1" TYPE="SKIP">
        <ATTRS>
            <ATTR RULE_NAME="mySkip1" />
        </ATTRS>
    </RULE>

    <RULE DESCRIPTION="" DOMAIN="CAE" NAME="Filter_new " TYPE="FILTER">
        <ATTRS>
            <ATTR RULE_NAME="myFilter1" />
        </ATTRS>
    </RULE>

    <RULE DESCRIPTION="" DOMAIN="CAE" NAME="Skip_new" TYPE="SKIP">
        <ATTRS>
            <ATTR RULE_NAME="mySkip1" />
        </ATTRS>
    </RULE>
</RULES>

Как я могу проанализировать этот файл с помощью SAXParser (в C ++), чтобы я мог извлечь значение атрибута RULE_NAME, только если атрибут TYPE имеетзначение "FILTER".

Я могу сделать это с помощью DOMParser, но я бы хотел использовать SAXParser.

1 Ответ

1 голос
/ 03 апреля 2012
@Override
public void startElement(String uri, String localName, String qName,
        Attributes attributes) throws SAXException {
    if (localName.equals("city")) {
        String city = attributes.getValue("data");
        info.setCity(city);
    } else if (localName.equals("temp_c")) {
        String t = attributes.getValue("data");
        int temp = Integer.parseInt(t); 
        info.setTemp(temp);
    } else if (localName.equals("condition")) {
        String condition = attributes.getValue("data");
        info.setCondition(condition);
    }
}

вы можете использовать для сравнения атрибутов, так как m делает «данные», которые являются дочерними атрибутами. надеюсь, что это работает

...