Question

i am a beginner with parsing and i want to create a XML by the help of the user.but i cannot append the xml.can you please help me out with the issue.i am sorry that i amy have not been able to format the code correctly.

public static String xmlSerialize(NewRecordDTO data) throws IllegalArgumentException, IllegalStateException, IOException
{

    File sdCard=Environment.getExternalStorageDirectory();
    File dir=new File(sdCard.getAbsolutePath()+"/backup");
    dir.mkdirs();
    File file=new File(dir,"diary.xml");
    FileOutputStream fos=new FileOutputStream( file, true);


    XmlSerializer xmlserializer=Xml.newSerializer();
    StringWriter writer=new StringWriter();
    xmlserializer.setOutput(writer);
    xmlserializer.startDocument("UTF-8", true);

    xmlserializer.startTag("", "LawyerRecords");
    xmlserializer.startTag("", "Record");

    xmlserializer.startTag("", "UID");
    xmlserializer.text(data.getUid());
    xmlserializer.endTag("", "UID");

    xmlserializer.startTag("", "PrevDate");
    xmlserializer.text(data.getPrev_date());
    xmlserializer.endTag("", "PrevDate");

    xmlserializer.startTag("", "CourtName");
    xmlserializer.text(data.getCaseName());
    xmlserializer.endTag("", "CourtName");

    xmlserializer.startTag("", "CaseNo");
    xmlserializer.text(data.getCaseNo());
    xmlserializer.endTag("", "CaseNo");

    xmlserializer.startTag("", "ForPartyName");
    xmlserializer.text(data.getForParty());
    xmlserializer.endTag("", "ForPartyName");

    xmlserializer.startTag("", "AgainstPartyName");
    xmlserializer.text(data.getAgainstParty());
    xmlserializer.endTag("", "AgainstPartyName");

    xmlserializer.startTag("", "Stage");
    xmlserializer.text(data.getStages());
    xmlserializer.endTag("", "Stage");

    xmlserializer.startTag("", "NextDate");
    xmlserializer.text(data.getNext_date());
    xmlserializer.endTag("", "NextDate");


    xmlserializer.endTag("", "Record");
    xmlserializer.endTag("", "LawyerRecords");
    xmlserializer.endDocument();

    String strData=writer.toString();
    fos.write(strData.getBytes());
    fos.close();

    return writer.toString();


}

The Xml is now giving an output like;

<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<LawyerRecords>
<Record>
  <UID>gshs</UID>
  <PrevDate>dhshsh</PrevDate>
  <CourtName>shshd</CourtName>
  <CaseNo>shsshhs</CaseNo>
  <ForPartyName>sgffsdddvd ddhdhd ddf</ForPartyName>
  <AgainstPartyName>sddhssh shshsd</AgainstPartyName>
  <Stage>sgshdhdhsg ggggdhhhh</Stage>
  <NextDate>20-2-2014</NextDate>
 </Record>
 </LawyerRecords>
 <LawyerRecords>
   <Record>
    <UID>suprito</UID>
    <PrevDate>dhshsh</PrevDate>
    <CourtName>shshd</CourtName>
    <CaseNo>shsshhs</CaseNo><ForPartyName></ForPartyName>
    <AgainstPartyName>sddhssh shshsd</AgainstPartyName>
    <Stage>sgshdhdhsg ggggdhhhh</Stage> 
    <NextDate>20-2-2014</NextDate>
  </Record>
</LawyerRecords>

and my desired output is:

    <?xml version='1.0' encoding='UTF-8' standalone='yes' ?>
<LawyerRecords>
<Record>
  <UID>gshs</UID>
  <PrevDate>dhshsh</PrevDate>
  <CourtName>shshd</CourtName>
  <CaseNo>shsshhs</CaseNo>
  <ForPartyName>sgffsdddvd ddhdhd ddf</ForPartyName>
  <AgainstPartyName>sddhssh shshsd</AgainstPartyName>
  <Stage>sgshdhdhsg ggggdhhhh</Stage>
  <NextDate>20-2-2014</NextDate>
 </Record>

   <Record>
    <UID>suprito</UID>
    <PrevDate>dhshsh</PrevDate>
    <CourtName>shshd</CourtName>
    <CaseNo>shsshhs</CaseNo><ForPartyName></ForPartyName>
    <AgainstPartyName>sddhssh shshsd</AgainstPartyName>
    <Stage>sgshdhdhsg ggggdhhhh</Stage> 
    <NextDate>20-2-2014</NextDate>
  </Record>
</LawyerRecords>
Was it helpful?

Solution

You every-time create xmlserializer.startTag("", "LawyerRecords"); and xmlserializer.endTag("", "LawyerRecords"); for all records that's why you getting wrong output..

You have to add LawyerRecords tag only at initial and end not for all records.

add start tag LawyerRecords when add first record and add end tag LawyerRecords when add last record.

You can parse XML following methods.

1)SAX Parser

2)DOM Parser

3)XML Pull Parser

You can use XmlSerializer for generate XML.

Here is Generate XML Code

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top