Huang Chen
Huang Chen

Reputation: 1205

How to include "encoding="UTF-8"" in xml string in Java?

I'm reading a customers object through XStream and then replacing any tags I don't need with blanks. Since the customers contain multiple customer it contains the xml form of them. The last .replaceAll("\\<\\?xml(.+?)\\?\\>", "") gets rid of excess <?xml version="1.0" encoding="UTF-8"?> inside the customers string.

I've tried finding <?xml version="1.0"?> then replacing it with <?xml version="1.0" encoding="UTF-8"?> but it caused no change. The final input starts with this:

<?xml version="1.0"?>

But I want to include the encoding="UTF-8"

How would include that part after I clean up the tags?

Here is the relevant code for the XML and writing it to a file.

    //Final XML string of customers
    String xml = xstream.toXML(customers);

    //Remove regex and excess tags
    xml = String.format(xml.replaceAll("<string>", "")
        .replaceAll("</string>", "")
        .replaceAll("<customers>", "")
        .replaceAll("</customers>", "")
        .replaceAll("&lt;", "<")
        .replaceAll("&#13;", "")
        .replaceAll("&gt;", ">")
        .replaceAll("\\<\\?xml(.+?)\\?\\>", ""), 4);

    System.out.println(xml);

    //Create file of grouped XML in a sub-folder
    String timeStamp = new SimpleDateFormat("MM dd yyyy hh.mm.ss a").format(new Date());
    FileWriter fw = new FileWriter("XML Claims\\All Customers" + " " + timeStamp + ".xml");
    fw.write(xml);
    fw.close();

Customers object:

public class Customers {
    //this is a string version of customer object converted through xstream
    public ArrayList<String> customers = new ArrayList<String>();
    public String XMLCreationDate = null;
    public int totalNumberOfRecords = 0;
}

Customer object:

public class Customer {
    public LetterContent letterContent = null;
    public LetterIdentifierInformation letterIdentifierInformation = null;
    public Addressee addressee = null;
}

Current XML:

<?xml version="1.0"?>
<Customers>
     <Customer>
          <letterContent></letterContent>
          <addressee></address>
     </Customer>
</Customers>

Desired XML:

<?xml version="1.0" encoding="UTF-8"?>
<Customers>
     <Customer>
          <letterContent></letterContent>
          <addressee></address>
     </Customer>
</Customers>

Upvotes: 0

Views: 4146

Answers (1)

Arun
Arun

Reputation: 73

you can do like following

XStream xstream = new xStream();  
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();  
Writer writer = new OutputStreamWriter(outputStream, "UTF-8");  
xStream.toXML(object, writer);  
String xml = outputStream.toString("UTF-8");

Upvotes: 2

Related Questions