2012-04-19 150 views
1

我正在尝试编写一个Android应用程序,可以将数据写入储存在SD卡上的XML文件。所有似乎都工作正常,但我的XML文件正好在1000字节截止。这里是代码:为什么我的Android上的XML文件被切断为1000字节

package brochard.chad.fieldReport; 

import java.io.FileWriter; 
import java.io.Serializable; 
import java.io.StringWriter; 

import org.xmlpull.v1.XmlSerializer; 
import android.database.Cursor; 
import android.os.Environment; 
import android.util.Log; 
import android.util.Xml; 

public class XMLWriter implements Serializable { 

private String filename; 
XmlSerializer serializer = Xml.newSerializer(); 
private StringWriter output = new StringWriter(100); 
FieldReportDBAdapter dbA; 
static final long serialVersionUID = 0; 

public XMLWriter (String _filename){ 
    filename = _filename; 
} 

public boolean beginXMlreport(Cursor cursor) { 
    try { 
     serializer.setOutput(output); 
     serializer.startDocument("UTF-8", false); 
     serializer.setPrefix("w", "http://schemas.microsoft.com/office/word/2003/wordml"); 
     serializer.startTag("w", "wordDocument"); 
     serializer.startTag("w", "styles"); 
     serializer.startTag("w", "style"); 
     serializer.attribute("w", "type", "paragraph"); 
     serializer.attribute("w", "styeId", "ReportHeading"); 
     serializer.startTag("w", "name"); 
     serializer.attribute("w", "val", "Heading"); 
     serializer.endTag("w", "name"); 
     serializer.startTag("w", "pPr"); 
     serializer.startTag("w", "jc"); 
     serializer.attribute("w", "val", "center"); 
     serializer.endTag("w", "jc"); 
     serializer.endTag("w", "pPr"); 
     serializer.startTag("w", "rPr"); 
     serializer.startTag("w", "b"); 
     serializer.attribute("w", "val", "on"); 
     serializer.endTag("w", "b"); 
     serializer.startTag("w", "sz"); 
     serializer.attribute("w", "val", "48"); 
     serializer.endTag("w", "sz"); 
     serializer.endTag("w", "rPr"); 
     serializer.endTag("w", "style"); 
     serializer.startTag("w", "style"); 
     serializer.attribute("w", "type", "paragraph"); 
     serializer.attribute("w", "styleId", "SubHeading"); 
     serializer.startTag("w", "name"); 
     serializer.attribute("w", "val", "SubHeading"); 
     serializer.endTag("w", "name"); 
     serializer.startTag("w", "pPr"); 
     serializer.startTag("w", "jc"); 
     serializer.attribute("w", "val", "left"); 
     serializer.endTag("w", "jc"); 
     serializer.endTag("w", "pPr"); 
     serializer.startTag("w", "rPr"); 
     serializer.startTag("w", "b"); 
     serializer.attribute("w", "val", "on"); 
     serializer.endTag("w", "b"); 
     serializer.startTag("w", "sz"); 
     serializer.attribute("w", "val", "36"); 
     serializer.endTag("w", "sz"); 
     serializer.endTag("w", "rPr"); 
     serializer.endTag("w", "style"); 
     serializer.startTag("w", "style"); 
     serializer.attribute("w", "type", "paragraph"); 
     serializer.attribute("w", "styleId", "Text"); 
     serializer.startTag("w", "name"); 
     serializer.attribute("w", "val", "Text"); 
     serializer.endTag("w", "name"); 
     serializer.startTag("w", "pPr"); 
     serializer.startTag("w", "jc"); 
     serializer.attribute("w", "val", "left"); 
     serializer.endTag("w", "jc"); 
     serializer.endTag("w", "pPr"); 
     serializer.startTag("w", "rPr"); 
     serializer.startTag("w", "b"); 
     serializer.attribute("w", "val", "off"); 
     serializer.endTag("w", "b"); 
     serializer.startTag("w", "sz"); 
     serializer.attribute("w", "val", "24"); 
     serializer.endTag("w", "sz"); 
     serializer.endTag("w", "rPr"); 
     serializer.endTag("w", "style"); 
     serializer.endTag("w", "styles"); 
     serializer.startTag("w", "body"); 
     serializer.startTag("w", "p"); 
     serializer.startTag("w", "pPr"); 
     serializer.startTag("w", "pStyle"); 
     serializer.attribute("w", "val", "ReportHeading"); 
     serializer.endTag("w", "pStyle"); 
     serializer.endTag("w", "pPr"); 
     serializer.startTag("w", "r"); 
     serializer.startTag("w", "t"); 
     serializer.text("Field Report"); 
     serializer.startTag("w", "br"); 
     serializer.endTag("w", "br"); 
     serializer.endTag("w", "t"); 
     serializer.endTag("w", "r"); 
     serializer.endTag("w", "p"); 
     serializer.startTag("w", "p"); 
     serializer.startTag("w", "pPr"); 
     serializer.startTag("w", "pStyle"); 
     serializer.attribute("w", "val", "SubHeading"); 
     serializer.endTag("w", "pStyle"); 
     serializer.endTag("w", "pPr"); 
     serializer.startTag("w", "r"); 
     serializer.startTag("w", "t"); 
     serializer.text("Project Title"); 
     serializer.endTag("w", "t"); 
     serializer.endTag("w", "r"); 
     serializer.endTag("w", "p"); 
     serializer.startTag("w", "p"); 
     serializer.startTag("w", "pPr"); 
     serializer.startTag("w", "pStyle"); 
     serializer.attribute("w", "val", "Text"); 
     serializer.endTag("w", "pStyle"); 
     serializer.endTag("w", "pPr"); 
     serializer.startTag("w", "r"); 
     serializer.startTag("w", "t"); 
     serializer.text("Owner: "+ 
     cursor.getString(FieldReportDBAdapter.OWNER_COLUMN)); 
     serializer.startTag("w", "br"); 
     serializer.endTag("w", "br"); 
     serializer.text("High Temp: "+ 
       cursor.getString(FieldReportDBAdapter.HIGHTEMP_COLUMN)); 
     serializer.startTag("w", "br"); 
     serializer.endTag("w", "br"); 
     serializer.text("Low Temp: "+ 
       cursor.getString(FieldReportDBAdapter.LOWTEMP_COLUMN)); 
     serializer.startTag("w", "br"); 
     serializer.endTag("w", "br"); 
     serializer.text("Conditions: "+ 
       cursor.getString(FieldReportDBAdapter.CONDITIONS_COLUMN)); 
     serializer.startTag("w", "br"); 
     serializer.endTag("w", "br"); 
     serializer.text("Notes: "+ 
       cursor.getString(FieldReportDBAdapter.NOTES_COLUMN)); 
     serializer.startTag("w", "br"); 
     serializer.endTag("w", "br"); 
     serializer.endTag("w", "t"); 
     serializer.endTag("w", "r"); 
     serializer.endTag("w", "p"); 
     serializer.endTag("w", "body"); 
     serializer.endTag("w", "wordDocument"); 
     return true; 
    } catch (Exception e) { 
     throw new RuntimeException(e); 
    } 

} 


    public boolean WriteToFile() { 
     FileWriter fWriter; 
     try{ 
      fWriter = new FileWriter(Environment.getExternalStorageDirectory()+ 
        "/"+filename); 
      Log.v("OUTPUT",output.toString()); 
      fWriter.write(output.toString()); 
      fWriter.flush(); 
      fWriter.close(); 
      return true; 
     }catch(Exception e){ 
        e.printStackTrace(); 
        return false; 
     } 
    }   
} 

任何帮助非常感谢! logcat以我想要的方式显示文件,它只是不会到达文件。

+0

确认:你说整个事情都被记录下来,但是XML文件只包含前1000个字节。那是对的吗? – 2012-04-19 03:28:25

+1

当你说1000个字节时,你的意思是输出对象在1000bytes时被截断,或者在logcat中只能看到1000个字节? – Shubhayu 2012-04-19 04:39:57

+0

创建的文件恰好为1000字节。它截断了字符串的其余部分。在logcat中,整个字符串都在那里。 – 2012-04-19 22:37:34

回答

2

我现在看到问题了。感谢您的意见,他们引导我参考XMLSerilizer。一旦我读完文档,我意识到我忘记了在XML序列化器上调用endDocument()。一旦我添加了对此方法的调用,代码就会按预期执行。

+0

你能接受这个答案吗?我发现这非常有用。 – 2013-10-22 17:48:44

相关问题