2013-07-24 44 views
0

我有這個字符串,我需要得到attribut Ccy to TtlIntrBkSttlmAmt與正則表達式。JAVA正則表達式與XML

你能幫助我有最好的模式嗎?

<?xml version = "1.0" encoding = "UTF-8"?> 
<Document xmlns = "urn:iso:std:iso:20022:tech:xsd:pacs.008.001.02" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"> 
    <FIToFICstmrCdtTrf> 
     <GrpHdr> 
      <MsgId>XXXXXXXXXXX</MsgId> 
      <CreDtTm>2013-07-23T16:30:14</CreDtTm> 
      <NbOfTxs>0</NbOfTxs> 
      <TtlIntrBkSttlmAmt Ccy = "EUR">0000.00</TtlIntrBkSttlmAmt> 
      <IntrBkSttlmDt>2013-07-24</IntrBkSttlmDt> 
      <SttlmInf> 
       <SttlmMtd>CLRG</SttlmMtd> 
       <SttlmAcct> 
        <Id> 
         <IBAN>XXXXXXXXXXXXXXXX</IBAN> 
        </Id> 
       </SttlmAcct> 
       <ClrSys> 
        <Prtry>XXXXX</Prtry> 
       </ClrSys> 
      </SttlmInf> 
     </GrpHdr> 

謝謝。

+5

爲什麼使用正則表達式? XPath出了什麼問題? – Thilo

+2

爲什麼不使用XML解析庫? – Makky

+1

因爲使用ETL和不能使用Dom解析器的工作! –

回答

1

我不會使用正則表達式,而是使用XML解析器。無論如何...

(?!= <TtlIntrBkSttlmAmt)Ccy = "[A-Z]+" 

應該這樣做。編輯[A-Z]組以滿足您的特定需求。

+1

感謝您的解決方案,但最後我創建了一個靜態函數,它將字符串轉換爲文檔XML並獲取我的屬性 –

1
?? = DocumentBuilderFactory.newInstance().newDocumentBuilder() 
     .parse(new InputSource(new StringReader(XMLLine))) 
     .getElementsByTagName("TtlIntrBkSttlmAmt") 
     .item(0).getAttributes().getNamedItem("Ccy").getNodeValue();