Ваша проблема в том, что в вашем коде вы создаете StringBuffer strbuffer
//For CustomObject Alignment
strbuffer = new StringBuffer();
strbuffer.append("public String Display_Test(){ \n");
strbuffer.append("\t\t\tString s ='Welcome'; \n");
strbuffer.append("\t\t\t return s; \n");
strbuffer.append("}");
Этот StringBuffer имеет содержимое
public String Display_Test(){
String s ='Welcome';
return s;
}
Вы назначаете StringBuffer для String sEHResponseXml
и распечатываете его на консоль
sEHResponseXml = strbuffer.toString();
System.out.println("Value of sEHResponseXml:::" + sEHResponseXml);
Проблема в том, что строка sEHResponseXml
не содержит действительный XML (это вообще не XML). Затем вы пытаетесь создать документ JDOM m_doc
из этой строки
builder.setIgnoringElementContentWhitespace(true);
m_doc = builder.build(new ByteArrayInputStream(sEHResponseXml.getBytes("UTF-8")));
И здесь ваша программа терпит неудачу, сообщая вам
org.jdom.JDOMException: Error on line 1: Content is not allowed in prolog
Я перезапустил вашу программу, но изменил strbuffer
, чтобы он содержал действительный XML (<doc> <p> h1 </p> </doc>
), вот программа ниже
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;
import java.io.*;
import java.lang.*;
public class JDOM_XML_TEST {
Document m_doc = null;
public Element elmEHResponse = null;
String sEHResponseXml = "";
String sOperationType = "Edit";
static String s_return = "";
StringBuffer strbuffer = null;
String sParamsXml_1 = "<VWPortal>" + "<EHResponse Type='" + " test CustomObject" + "' ProgLangId='" + "1" + "'>" + "<Signature>public void Item1_ButtonClick_RESP1(Context ObjContextParam, string sPortlet, string sPortletInstanceId, CILPrtlDataset objCILPrtlDataset)</Signature></EHResponse><ResultType>Result</ResultType></VWPortal>";
//String sParamsXml ="public String Display_Test(){" "String s ='Welcome';" "return s; }";
public static void main(String[] args) {
JDOM_XML_TEST xml_test = new JDOM_XML_TEST();
s_return = xml_test.getXml();
//System.out.println("Value is:::"+s_return);
}
public String getXml() {
try {
if (!sOperationType.equalsIgnoreCase("Delete")) {
SAXBuilder builder = new SAXBuilder(false);
//Commended for CustomObject
//doc = builder.build(new ByteArrayInputStream(sParamsXml.getBytes("UTF-8")));
//For CustomObject Alignment
strbuffer = new StringBuffer();
strbuffer.append("<doc> <p> h1 </p> </doc>");
sEHResponseXml = strbuffer.toString();
System.out.println("Value of sEHResponseXml:::" + sEHResponseXml);
builder.setIgnoringElementContentWhitespace(true);
m_doc = builder.build(new ByteArrayInputStream(sEHResponseXml.getBytes("UTF-8")));
elmEHResponse = m_doc.getRootElement();
System.out.println("Value of elmEHResponse in before:::" + elmEHResponse);
XMLOutputter Out = new XMLOutputter();
sEHResponseXml = Out.outputString(elmEHResponse);
System.out.println("Value of elmEHResponse in after:::" + sEHResponseXml);
}
} catch (Exception e) {
e.printStackTrace();
}
return sEHResponseXml;
}
}
Это выводит
Value of sEHResponseXml:::<doc> <p> h1 </p> </doc>
Value of elmEHResponse in before:::[Element: <doc/>]
Value of elmEHResponse in after:::<doc> <p> h1 </p> </doc>