How to indent XML properly using XMLSerializer?

前端 未结 4 1310
野性不改
野性不改 2021-02-07 14:39

I\'m having a hard time trying to indent XML files using XMLSerializer.

I\'ve tried

serializer.setFeature(\"http://xmlpull.org/v1/doc/featur         


        
相关标签:
4条回答
  • 2021-02-07 14:44

    Have you tried using these two properties "in combination" on Serializer?

    // indentation as 3 spaces
    serializer.setProperty(
       "http://xmlpull.org/v1/doc/properties.html#serializer-indentation", "   ");
    // also set the line separator
    serializer.setProperty(
       "http://xmlpull.org/v1/doc/properties.html#serializer-line-separator", "\n");
    
    0 讨论(0)
  • 2021-02-07 14:57

    serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true); worked now.

    I dont know if i was putting it before serializer.startDocument(encoding, standalone) or there was a error with stuff not related to the .xml creation!

    Thanks guys!

    0 讨论(0)
  • 2021-02-07 14:57

    I just wanted to make a note that Transformer.setOutputProperties(Properties) doesn't seems to work for me (1.6.0_26_b03), but Transformer.setOutputProperty(String,String) does perfectly.
    If you have a Properties object, you might have to iterate and individually set the output property for it to work.

    0 讨论(0)
  • 2021-02-07 15:04

    This is a solution in Java, andriod does support transformer so this should work.

    // import additional packages
    import java.io.*;
    
    // import DOM related classes
    import org.w3c.dom.*;
    import javax.xml.parsers.*;
    import javax.xml.transform.*;
    import javax.xml.transform.dom.*;
    import javax.xml.transform.stream.*;
    
    // write the output file
    try {
      // create a transformer
      TransformerFactory transFactory = TransformerFactory.newInstance();
      Transformer        transformer  = transFactory.newTransformer();
    
      // set some options on the transformer
      transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
      transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
      transformer.setOutputProperty(OutputKeys.INDENT, "yes");
      transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
    
      // get a transformer and supporting classes
      StringWriter writer = new StringWriter();
      StreamResult result = new StreamResult(writer);
      DOMSource    source = new DOMSource(xmlDoc);
    
      // transform the xml document into a string
      transformer.transform(source, result);
    
      // open the output file
      FileWriter outputWriter = new FileWriter(outputFile);
      outputWriter.write(writer.toString());
      outputWriter.close();
    
    } catch(javax.xml.transform.TransformerException e) {
      // do something with this error
    }catch (java.io.IOException ex) {
      // do something with this error
    }
    
    0 讨论(0)
提交回复
热议问题