Форматированный xml, необходимый для ввода xml в виде строки с помощью SAXParserFactory

#xml #string #format #sax #saxparser

Вопрос:

Я совершенно новичок в форматировании xml. Я сталкиваюсь с требованием, когда мне нужно отформатировать xml с отступом и более простым способом из входного xml в виде строки. Я предоставляю здесь входные данные и необходимые выходные данные. Пожалуйста, помогите мне, как работать с SAXParser.

Введите xml в виде строки

 String inputXml = "lt;?xml version="1.0" encoding="utf-8"?gt;lt;STUDENT xmlns="com/demo/student/gmfV2.08"gt;lt;STUDENT_1gt;lt;STUDENTDETAILSgt;lt;NAMEgt;Alexlt;/NAMEgt;lt;AGEgt;21lt;/AGEgt;lt;/STUDENTDETAILSgt;lt;STUDENTADDRESSgt;lt;ADDRESSgt;Texaslt;/ADDRESSgt;lt;/STUDENTADDRESSgt;lt;STUDENTREGNOgt;lt;REGNOgt;3100012lt;/REGNOgt;lt;REGYRgt;2019lt;/REGYRgt;lt;/STUDENTREGNOgt;lt;DEPARTMENTgt;lt;DEPARTMENTNAMEgt;Philosopylt;/DEPARTMENTNAMEgt;lt;/DEPARTMENTgt;lt;/STUDENT_1gt;lt;/STUDENTgt;";  

Необходимый выходной xml

 lt;STUDENT xmlns="com/demo/student/gmfV2.08"gt; lt;STUDENT_1gt;  lt;STUDENTDETAILSgt;  lt;NAMEgt;Alexlt;/NAMEgt;  lt;AGEgt;21lt;/AGEgt;  lt;/STUDENTDETAILSgt;  lt;STUDENTADDRESSgt;  lt;ADDRESSgt;Texaslt;/ADDRESSgt;  lt;/STUDENTADDRESSgt;  lt;STUDENTREGNOgt;  lt;REGNOgt;3100012lt;/REGNOgt;  lt;REGYRgt;2019lt;/REGYRgt;  lt;/STUDENTREGNOgt;  lt;DEPARTMENTgt;  lt;DEPARTMENTNAMEgt;Philosopylt;/DEPARTMENTNAMEgt;  lt;/DEPARTMENTgt; lt;/STUDENT_1gt;  

Если кто-нибудь может, пожалуйста, выложите весь фрагмент кода с помощью SAXParser, который будет работать.

В настоящее время он использует TransformerFactory, как показано ниже :

 public static String formatXml(String xml){  System.out.println("gt;gt;gt; Inside rcxmlutility formatXml()-gt;"  "n"  xml);  ByteArrayInputStream byteArrayInputStream =null;  String inputXml = xml;  String retXml = "";    if (xml==null) {  System.out.println("xml was null in prettyPrint()");   retXml = xml;  }  else if(xml.isEmpty()){  System.out.println("xml was blank in prettyPrint()");  retXml = xml;  }else{  try{  TransformerFactory factory = SAXTransformerFactory.newInstance();  factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);  factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_DTD, "");  factory.setAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET, "");    Transformer serializer = factory.newTransformer();  serializer.setOutputProperty(OutputKeys.INDENT, "yes");  serializer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");  serializer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");  byteArrayInputStream = new ByteArrayInputStream(inputXml.getBytes());   Source xmlSource=new SAXSource(new InputSource(byteArrayInputStream));    StringWriter writer = new StringWriter();  StreamResult res = new StreamResult(writer);   serializer.transform(xmlSource, res);  retXml = writer.toString();  }catch(TransformerException e){  System.out.println("Error in generating XML -- TransformerException"   e);  retXml = xml;   }catch(Exception e){  System.out.println("Error in generating XML -- TransformerException"   e);  retXml = xml;   }finally{  if(null!=byteArrayInputStream){  try {  byteArrayInputStream.close();  } catch (IOException e) {  System.out.println("Exception while closing InputStream ::" e);  }  }  }  }  System.out.println("lt;lt;lt; Exitting rcxmlutility formatXml()-gt;"  "n"   retXml);  return retXml;  }  

Пожалуйста, предложите аналогичную реализацию SAXParser для кода.Форматированный xml, необходимый для ввода xml в виде строки с помощью SAXParserFactory.