簡體   English   中英

從Java中的xml元素讀取CDATA的錯誤

[英]Bug reading CDATA from xml element in Java

我在這里撓了一會兒......

所以我有一個Java應用程序。 在這個應用程序中,我需要讀取一個XML文件,從一個元素中獲取Character Data,將它傳遞給一個新的DOM Document,更改一些元素,然后將新Document轉換回CDATA,將其重新附加到原始消息並發送它關了。

所以...這是我需要讀入的消息,以及讀取它的函數:

private static String getCharacterDataFromElement(Node e) {
    Node child = e.getFirstChild();
    if (child instanceof CharacterData) {
      CharacterData cd = (CharacterData) child;
      System.out.println(cd.getBaseURI());
      System.out.println(cd.getData());
      return cd.getBaseURI();
    }
    return "error...";
}

這是需要更改的xml文件

<RLSOLVE_MSG version="5.0">
<MESSAGE>
    <SOURCE_ID>DP01</SOURCE_ID>
    <TRANS_NUM>000001</TRANS_NUM>
</MESSAGE>
<POI_MSG type="interaction">
    <INTERACTION name="posPrintReceipt">
        <RECEIPT type="merchant" format="xml">
            <![CDATA[<RECEIPT>
  <AUTH_CODE>06130</AUTH_CODE>
  <CARD_SCHEME>VISA</CARD_SCHEME>
  <CURRENCY_CODE>GBP</CURRENCY_CODE>
  <CUSTOMER_PRESENCE>internet</CUSTOMER_PRESENCE>
  <FINAL_AMOUNT>1.00</FINAL_AMOUNT>
  <MERCHANT_NUMBER>8888888</MERCHANT_NUMBER>
  <PAN_NUMBER>454420******0382</PAN_NUMBER>
  <PAN_EXPIRY>12/15</PAN_EXPIRY>
  <TERMINAL_ID>04176421</TERMINAL_ID>
  <TOKEN>454420bbbbbkqrm0382</TOKEN>
  <TOTAL_AMOUNT>1.00</TOTAL_AMOUNT>
  <TRANSACTION_DATA_SOURCE>keyed</TRANSACTION_DATA_SOURCE>
  <TRANSACTION_DATE>14/02/2014</TRANSACTION_DATE>
  <TRANSACTION_NUMBER>000001</TRANSACTION_NUMBER>
  <TRANSACTION_RESPONSE>06130</TRANSACTION_RESPONSE>
  <TRANSACTION_TIME>17:13:17</TRANSACTION_TIME>
  <TRANSACTION_TYPE>purchase</TRANSACTION_TYPE>
  <VERIFICATION_METHOD>unknown</VERIFICATION_METHOD>
  <DUPLICATE>false</DUPLICATE>
</RECEIPT>]]>
            </RECEIPT>
        </INTERACTION>
    </POI_MSG>
</RLSOLVE_MSG>

當執行cd.getData()時,它返回“\\ n \\ t \\ t \\ t \\ t tt”

Aaaany的想法?

仔細查看您的XML。 如果我把它們寫成一行,那實際上就是這樣

<RECEIPT type="merchant" format="xml">\n\t\t\t<![CDATA[...]]>\n\t\t\t</RECEIPT>

所以樹實際上看起來像:

            RECEIPT
       /      |      \
 \n\t\t\t   CDATA   \n\t\t\t

所以你有三個孩子。 由於你只是第一個孩子,你只是得到了\\n\\t\\t\\t

循環遍歷所有孩子並連接他們的數據,你應該擁有一切。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM