2014-06-21 4 views
0

에서 그들을 에코 :XML은 많은 값을 읽고 난이 같은 XML 변수라는 이름의 XML이 쉬

<m:RgWsPublicFirmActRtUser> 
     <m:firmActDescr>TEXT</m:firmActDescr> 
     <m:firmActKind>2</m:firmActKind> 
     <m:firmActKindDescr>TEXT</m:firmActKindDescr> 
     <m:firmActCode>47191000</m:firmActCode> 
</m:RgWsPublicFirmActRtUser> 

을 내가 명령

#!/bin/sh 
echo $XML | grep -o -P '(?<=<m:firmActDescr>).*(?=</m:firmActDescr>)' 
echo "something" 

로 에코되고 난

를 얻을 수
TEXT 
something 

하지만 지금은 하나 이상의 값과 xml이 동일합니다.

<m:RgWsPublicFirmActRtUser> 
     <m:firmActDescr>TEXT</m:firmActDescr> 
     <m:firmActKind>2</m:firmActKind> 
     <m:firmActKindDescr>TEXT</m:firmActKindDescr> 
     <m:firmActCode>47191000</m:firmActCode> 
</m:RgWsPublicFirmActRtUser> 
<m:RgWsPublicFirmActRtUser> 
     <m:firmActDescr>TEXT2</m:firmActDescr> 
     <m:firmActKind>3</m:firmActKind> 
     <m:firmActKindDescr>TEXT2</m:firmActKindDescr> 
     <m:firmActCode>47191000</m:firmActCode> 
</m:RgWsPublicFirmActRtUser> 

및 또한 TEXT3 등.

TEXT1 
something 
TEXT2 
something 
TEXT3 
something 

내가 사용하지 못할에 "동안"과 XML 명령하는 얻는처럼 이전 방법을 더 이상, meaby 사용 무언가를 보여 난 내 프로그램을 표시 할 수 있도록 캠 방법

값? !

답변

1

여기에 가장 좋은 방법은 아마도 xsltproc입니다 - XSLT는 XML을 처리하기에 적합합니다 :

XSLT 파일에서
printf "$XML" | xsltproc firmActDescr.xslt - 

, xsl:textsomething<xsl:output method="text" omit-xml-declaration="yes" indent="no"/> 일반 텍스트를 인쇄하려면 인쇄, 값을 얻을 수 xsl:value-of를 사용합니다.

+0

나는 그것을 시도 할 것이다. – user2670708