2011-01-19 11 views
-1

jdomの空白を保持する方法は?Jdomのストリームへのストリーム

私は以下のエラーを取得:

org.jdom.JDOMException: Error on line 1: Content is not allowed in prolog

これは私のコードで、親切にこのエラーがで空白を維持するとは関係ありません

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("public String Display_Test(){ \n"); 
       strbuffer.append("\t\t\tString s ='Welcome'; \n"); 
       strbuffer.append("\t\t\t return s; \n"); 
       strbuffer.append("}"); 

       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; 
    } 
} 
+1

回答が必要な場合は、いくつかのコード/ xmlを入力する必要があると思います。 – Mark

答えて

0

...このコードのための解決策を教えてあなたのXMLが、あなたのxmlコンテンツの開始前にいくつかの余分なバイト。 NotePad ++(またはBBEditなど)を使用し、XML文書の先頭に余分な文字がないかどうか確認してください。またここにあなたのXMLを投稿してください。

0

これは私のコードで、親切にあなたの問題はあなたのコードで、あなたがた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のは持っているということです

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("public String Display_Test(){ \n"); 
       strbuffer.append("\t\t\tString s ='Welcome'; \n"); 
       strbuffer.append("\t\t\t return s; \n"); 
       strbuffer.append("}"); 

       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; 
    } 
} 
0

...このコードのための解決策を教えて内容

 
public String Display_Test(){ 
      String s ='Welcome'; 
      return s; 
} 

StringBufferを文字列に割り当てていますとコンソール

  sEHResponseXml = strbuffer.toString(); 
      System.out.println("Value of sEHResponseXml:::" + sEHResponseXml); 

問題にそれを印刷するには、文字列sEHResponseXmlは(それがすべてXMLではありません)ではないが有効なことをXMLを含んでいないことです。その後、試してみて、この文字列

  builder.setIgnoringElementContentWhitespace(true); 
      m_doc = builder.build(new ByteArrayInputStream(sEHResponseXml.getBytes("UTF-8"))); 

からJDOMドキュメントm_docを構築し、あなたのプログラムはあなたに言って、失敗した場所です

org.jdom.JDOMException: Error on line 1: Content is not allowed in prolog

Iあなたのプログラムを再実行しましたが、有効な含まれて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; 
    } 
} 

この出力s

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> 
関連する問題