2012-04-19 51 views
0

基於某些條件,我需要生成一個只包含一組來自CSV的值的XML,從而得到一個值爲CSV的流。例如,從Java中的CSV流內部化XML構造

Input : a:value1, b:value2, c:value3, d:value4, e:value5. 
if (condition1) 
XML O/P = <Request><ValueOfA>value1</ValueOfA><ValueOfE>value5</ValueOfE></Request> 
else if (condition2) 
XML O/P = <Request><ValueOfB>value2</ValueOfB><ValueOfD>value4</ValueOfD></Request> 

我想以一種給定模板的方式來外部化進程,從而生成相應的輸出XML。字符串操作是實現這一點最簡單的方法,但如果輸入中出現一些特殊字符,我不想搞亂XML等。請建議。

+0

建議什麼?你有什麼嘗試? – 2012-04-19 12:56:52

回答

0

我會建議創建一個xsd並使用JAXB來創建可用於生成XML的Java綁定類。

+1

認真創建一個XSD!使用JAXB註釋對類進行註釋會更容易。它很容易找出上述XML的映射。 – 2012-04-19 13:00:01

+0

每個人都喜歡以某種方式做事,我更喜歡使用xsd。這只是個人喜好的問題,因爲任何一種方式都行得通。 – ChadNC 2012-04-19 14:33:34

0

我推薦自己的模板引擎(JATL http://code.google.com/p/jatl/)儘管它適合(X)HTML,但它也非常適合生成XML。

我沒有打擾爲你解決整個問題(即對輸入進行雙重分割(「,」,然後是「:」)。)但是這是如何使用JATL的。

final String a = "stuff"; 
    HtmlWriter html = new HtmlWriter() { 
     @Override 
     protected void build() { 
      //If condition1 
      start("Request").start("ValueOfA").text(a).end().end(); 
     } 
    }; 
    //Now write. 
    StringWriter writer = new StringWriter(); 
    String results = html.write(writer).getBuffer().toString(); 

這將產生

<Request><ValueOfA>stuff</ValueOfA></Request> 

所有正確的轉義爲您處理。