2017-07-19 34 views
0

我有解析寫入和讀取xml文件時出現此錯誤。org.xml.sax.SAXParseException:處理指令不得以xml開頭

那些都是寫功能和讀:

protected void write_xml_file(String file_name) { 
    //if (file_name == null) file_name = "spells.xml"; 
    FileOutputStream fos; 
    try { 
     fos = openFileOutput(file_name, Context.MODE_APPEND); 
     XmlSerializer serializer = Xml.newSerializer(); 
     serializer.setOutput(fos, "UTF-8"); 
     serializer.startDocument(null, Boolean.valueOf(true)); 
     serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); 
     serializer.startTag(null, "spells"); 
     for (int j = 0; j < 3; j++) { 
      serializer.startTag(null, "spell"); 
      serializer.text("asd" +j); 
      serializer.endTag(null, "spell"); 
     } 
     serializer.endDocument(); 
     serializer.flush(); 
     fos.close(); 
    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 


} 

protected void read_xml_file(String file_name,Context context) { 
    try { 
     String path=context.getFilesDir() + File.separator + file_name; 
     File fXmlFile = new File(context.getFilesDir() + File.separator + file_name); 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder = null; 
     dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(fXmlFile); 
     doc.getDocumentElement().normalize(); 
     NodeList nList = doc.getElementsByTagName("spells"); 


     for (int temp = 0; temp < nList.getLength(); temp++) { 

      Node nNode = nList.item(temp); 

      //System.out.println("\nCurrent Element :" + nNode.getNodeName()); 

      if (nNode.getNodeType() == Node.ELEMENT_NODE) { 

       Element eElement = (Element) nNode; 

       //System.out.println("spell id : " + eElement.getAttribute("id")); 
       //System.out.println("name : " + eElement.getElementsByTagName("firstname").item(0).getTextContent()); 
       //System.out.println("description : " + eElement.getElementsByTagName("firstname").item(0).getTextContent()); 
       //System.out.println("school : " + eElement.getElementsByTagName("lastname").item(0).getTextContent()); 

      } 
     } 


    } catch (ParserConfigurationException e) { 
     e.printStackTrace(); 
    } catch (SAXException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

這是錯誤:

org.xml.sax.SAXParseException: processing instructions must not start with xml (position:unknown @6:10 in [email protected])

+1

你需要發佈你的xml,看起來像多數民衆贊成在問題,而不是代碼。 – RobVoisey

+0

我的xml被寫入內部存儲器,我不知道如何得到它 – Nevarim

回答

1

org.xml.sax.SAXParseException: processing instructions must not start with xml (position:unknown @6:10 in [email protected])

它看起來就像你在你的XML文件中有<?xml version="1.0" encoding="utf-8"?>。刪除它然後嘗試它!

+0

是這個標籤來移除?serializer.setOutput(fos,「UTF-8」); – Nevarim

+0

@ Nevarim是的,刪除它 –