2014-06-18 1 views
0

저는 xml에서 간단한 사용자 이름과 암호를 읽으려는 많은 다른 자습서를 시도해 왔습니다. 임무 지명. 내가sd Card의 Android XMLPullParser ... 맞지 않는 것이 있습니까?

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); 
    } 

내가 볼 수있는 주요 문제를 이용하고있다

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

내 연결 코드는 xpp.getName가 항상 null을 반환합니다. 내가 뭘 잘못하고 있는지 모르겠다. 봐 주셔서 감사합니다. 나는

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; 
} 

나는 내가 생성을위한 코드를 추가 할 생각 ... 여기에 내가 how to parse xml file from Sdcard in Android Read/write to external XML file in Android

답변

0

나는 그것을 관리하는 방법 이것은을 시도 것입니다 .. 그것을 찾는 시도 XML도 마찬가지입니다. 1 stop shop ..

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){} 

}