groovyxmlslurper

XmlSlurper changing empty node to null node


I am fetching a part of xml using XmlSlurper, when xml has <node> </node>(value with 2 space), its converting it as <node/>, but i want to keep it as original XML

Original XML <node> </node>

Converted by XmlSlurper: <node/>

how to avoid XML conversion to <node/>

i am using below code

XmlSlurper slurper = new XmlSlurper();
def xml = slurper.parseText(testxml);
def node=XmlUtil.serialize(xml.MessageRequest.LineSize[1]);
msg.put("node",node);

Solution

  • use slurper.setKeepWhitespace(true) method to instruct slurper to keep whitespaces in values

    import groovy.xml.*
    
    def testxml = '''<root><a><node>  </node></a></root>'''
    
    XmlSlurper slurper = new XmlSlurper();
    slurper.setKeepWhitespace(true);         //<<------ this line
    def xml = slurper.parseText(testxml);
    def node=XmlUtil.serialize(xml.a);
    

    result:

    <?xml version="1.0" encoding="UTF-8"?><a>
      <node>  </node>
    </a>