2014-04-14 4 views
1

다음 문자열이 있습니다. Java를 사용하여 두 단어 사이의 문자열 <cases> and </cases>을 추출하고 싶습니다. 내 요구 사항에 따라 올바른 XML을 형성하기 위해 문자열을 추출하고 싶습니다.자바에서 두 단어 사이의 문자열을 추출하십시오.

<cases><Final-Results><row> 
      <CRDATTIM>2014-03-26-05.22.22.339840</CRDATTIM> 
      <RECORDCD>C</RECORDCD> 
      <CRNODE>01</CRNODE> 
      <CKEY>2014-03-26-05.22.22.339840C01</CKEY> 
      <STATCD>CREATED</STATCD> 
      <UNITCD>CSMHCQA</UNITCD> 
      <WRKTYPE>CALL</WRKTYPE> 
      <issues><row> 
     <IKEY>2014-03-26-05.22.22.193840T01</IKEY> 
     <PRTY>999</PRTY> 
     <ISSUEID>20140326-155047-DT81694</ISSUEID> 
     <SUBJECT>Group</SUBJECT> 
     <ISSTYP>GROUP</ISSTYP> 
     <ISSCAT1>GROUP INQUIRY</ISSCAT1> 
    </row></issues></row></Final-Results></cases><?xml version="1.0" encoding="UTF-8"?> 
    <response> 
     <FOLDERID>COMM*H</FOLDERID> 
    </response> 

다음 코드를 사용해 보았습니다. 하지만 나를 위해 일하지 않습니다.

Pattern pattern = Pattern.compile("<cases>(.*?)</cases>"); 
Matcher matcher = pattern.matcher(string); 
while (matcher.find()) { 
    System.out.println(matcher.group(1)); 
} 

여기에 실수가 있습니까? 내 문제를 해결하기 위해 아이디어를 공유해주세요. 미리 감사드립니다. 그것을 처리하기 위해 잘 구성된 XML 문서를 사용 파서 대신 정규식 인 경우, BTW

Pattern pattern = Pattern.compile("<cases>(.*?)</cases>"); 

Pattern pattern = Pattern.compile("<cases>(.*?)</cases>", Pattern.DOTALL); 

로 :

+2

패턴 일치를 사용하여 xml을 구문 분석하지 마십시오. 거의 모든 상상할 수있는 언어에서 xml을 다루는 구조가 있습니다. 그것들을 사용하십시오. 그것은 당신의 인생을 훨씬 쉽게 만들 것입니다. –

+0

나는 동의한다. 하지만 내 XML 문자열은 잘 형성된 문자열이 아닙니다. 그래서 패턴 일치를 사용하여 콘텐츠를 추출 할 생각입니다. –

+0

사실이지만 유효한 XML 조각처럼 보입니다. 아마도 http://stackoverflow.com/questions/729621/convert-string-xml-fragment-to-document-node-in-java에서 아이디어를 얻을 수 있습니다. –

답변

4

을 변경해보십시오.

+0

완벽하게 일했습니다! 감사합니다 켄트! –

관련 문제