Как я могу сопоставить определенный элемент в NodeList и получить его NodeValues? - PullRequest
0 голосов
/ 16 марта 2012

У меня есть XML-файл с тегами, в которых указано название страны, альфа2 и телефонный код

Теперь у меня есть строковое значение (то есть телефонный код), которое я хотел бы проверить, существует ли оно в теге телефонного кода и, если оно есть, должно вернуть название страны и альфа 2. Я сделал небольшой код, но продолжал получать ошибку в операторе if, который у меня есть *. Пожалуйста, кто-нибудь может мне помочь с кодом? Вот XML-файл

<countries>
<country name="AFGHANISTAN" alpha2="AF" diallingcode="93"/>
<country name="ÅLAND ISLANDS" alpha2="AX"/>
<country name="ALBANIA" alpha2="AL" diallingcode="355"/>
<country name="ALDERNEY"/>
<country name="ALGERIA (El Djazaïr)" alpha2="DZ" diallingcode="213"/>
<country name="AMERICAN SAMOA" alpha2="AS" diallingcode="1-684"/>

вот мое занятие

public class NewTester extends Activity {
/** Called when the activity is first created. */

TextView display;
String getinput;
String data,result;
int code;
InputStream instream;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    display=(TextView)findViewById(R.id.tvdisplay);

    String dphoneNumber="9345678";

    data=dphoneNumber.substring(0,2);



    try {
        DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
        DocumentBuilder db=dbf.newDocumentBuilder();
        instream = getResources().openRawResource(R.raw.mycountries);
        Document doc=db.parse(instream,null);

        doc.getDocumentElement().normalize();

        NodeList nodeList=doc.getElementsByTagName("country");

        for(int i=0;i<nodeList.getLength();i++){
             Element ele=(Element)nodeList.item(i);
            NodeList Countryname=ele.getElementsByTagName("name");
            NodeList CountryAlpha=ele.getElementsByTagName("alpha2");
            NodeList Countrydial=ele.getElementsByTagName("diallingcode");
            if(Countrydial.item(0).getNodeValue()==data){//I get error when I run the application from here.
                result=CountryAlpha.item(0).getNodeValue();

            }
            instream.close();

        }

    } catch (ParserConfigurationException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();

    } catch (SAXException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    display.setText(""+result);
}
}

1 Ответ

2 голосов
/ 16 марта 2012

Примерно так:

        ......
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        DocumentBuilder db = dbf.newDocumentBuilder();
        instream = getResources().openRawResource(R.raw.mycountries);
        Document doc = db.parse(instream, null);

        doc.getDocumentElement().normalize();

        NodeList nodeList = doc.getElementsByTagName("country");

        for (int i = 0; i < nodeList.getLength(); i++) {
            Node dialingCode = nodeList.item(i).getAttributes().getNamedItem("diallingcode");
            if(dialingCode!= null && dialingCode.getNodeValue().equals(dphoneNumber)){
                result = nodeList.item(i).getAttributes().getNamedItem("diallingcode").getNodeValue();
                break;
            }
        }
        instream.close();
        ....... 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...