2017-07-19 21 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うん、それを削除 –

関連する問題