Android XMLPullParser с SD-карты... что-то не так?

Я пробовал много разных руководств, чтобы попытаться прочитать простое имя пользователя и пароль из xml. Это для задания.

 <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
 <UserDetails>
 <Username User="Bryan" Pass="Boo" />
 </UserDetails>

Мои коды подключения, которые я использовал

public void UserCheck() throws FileNotFoundException, IOException{


    try {
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        XmlPullParser xpp = factory.newPullParser();

        //file ref
        File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),"/UserDetails.xml");
        //inputstream
        FileInputStream fis = new FileInputStream(file.getPath());
        //set the input
        xpp.setInput(new InputStreamReader(fis));
       //Tutorial didnt use the eventType
        int eventType = xpp.getEventType();

        String nodeName = xpp.getName();
        if (nodeName=="Username"){

        }
    } catch (XmlPullParserException ex) {
        Logger.getLogger(Comp4Task2.class.getName()).log(Level.SEVERE, null, ex);
    }

Основная проблема, которую я вижу, заключается в том, что xpp.getName все время возвращает значение null. Я не уверен, что я делаю неправильно. Спасибо, что посмотрели. Я пытался найти это... вот что я пробовал как разобрать XML-файл с Sdcard в Android Чтение/запись во внешний файл XML в Android


person user3751093    schedule 18.06.2014    source источник


Ответы (1)


Вот так у меня получилось...

    public boolean UserCheck(String Username, String Password) throws FileNotFoundException, IOException{


    try {

        String data;
        XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
        factory.setNamespaceAware(true);
        File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM),"/UserDetails.xml");
        FileInputStream fis = new FileInputStream(file.getPath());
       InputStreamReader isr = new InputStreamReader(fis);
        /////////////////////
        char[] InputBuffer = new char[fis.available()];
        isr.read(InputBuffer);
         data = new String(InputBuffer);
        isr.close();
        fis.close();
        XmlPullParser xpp = null;
        xpp = factory.newPullParser();
        xpp.setInput(new StringReader(data));
        ///////////////////////////////////////

        int eventType = 0;
        eventType = xpp.getEventType();


        while (eventType != XmlPullParser.END_DOCUMENT){
if (eventType == XmlPullParser.START_DOCUMENT) {
    System.out.println("Start document");
}
else if (eventType == XmlPullParser.START_TAG) {
    String tagName = xpp.getName();
    if (tagName.contentEquals("User"))
    {
        String StoredUsername = xpp.getAttributeValue(null,"Username");
        String StoredPassword = xpp.getAttributeValue(null, "Password");
        if (Username.equals(StoredUsername)){
            if(Password.equals(StoredPassword)){
                return true;
            }
        }
    }
}
else if (eventType == XmlPullParser.END_TAG) {
    System.out.println("End tag "+xpp.getName());
}
        eventType = xpp.next();
}
    } catch (XmlPullParserException ex) {
        Logger.getLogger(Comp4Task2.class.getName()).log(Level.SEVERE, null, ex);
    }
    return false;
}  

Я думал, что добавлю код для создания xml. 1 остановка магазин..

public void SaveToFile(){
Username = inputUsername.getText().toString();
Password = inputPassword.getText().toString();


try{

    FileOutputStream fos = new FileOutputStream(myXML);

    //FileOutputStream fil = getApplicationContext().openFileOutput("UserDetails", Context.MODE_WORLD_WRITEABLE);

    XmlSerializer xSe = Xml.newSerializer();
   xSe.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);


    StringWriter writer = new StringWriter();
    xSe.setOutput(writer);
    xSe.startDocument("UTF-8", true);
    xSe.startTag(null, "UserDetails");
    xSe.startTag(null, "User");
    xSe.attribute(null,"Username", Username);
    xSe.attribute(null, "Password",Password);
    xSe.endTag(null, "User");
    xSe.endTag(null, "UserDetails");

    xSe.endDocument();
    xSe.flush();
    String dataWrite = writer.toString();
    fos.write(dataWrite.getBytes());
    fos.close();
}
catch(Exception e){}

}
person user3751093    schedule 19.06.2014