채택완료

디비 또는 POST로 받은 xml 데이타 파싱 문의드립니다

디비에서 불러온 값이 있습니다.

<?php
$Files = '<Root><File Size="310330"><Ori>IMG1k.jpg</Ori><Name>11.jpg</Name><Url>/data/</Url></File><File Size="802710"><Ori>IMG2g.png</Ori><Name>21.png</Name><Url>/data/</Url></File><File Size="107322"><Ori>IMG3v.png</Ori><Name>g3.png</Name><Url>/data/</Url></File><File Size="123443"><Ori>IMG4s.png</Ori><Name>rr.png</Name><Url>/data/</Url></File><File Size="684443"><Ori>IMG5w.png</Ori><Name>y5.png</Name><Url>/data/</Url></File><File Size="140683"><Ori>IMG6g.png</Ori><Name>6w.png</Name><Url>/data/</Url></File>
</Root>';

?>

 

이것을 보기좋게 엔터를 처보면 아래와 같습니다.

개수는 여러가지로 변경될수 있어요

 

<?php
$Files = '<Root>
<File Size="310330"><Ori>IMG1k.jpg</Ori><Name>11.jpg</Name><Url>/data/</Url></File>
<File Size="802710"><Ori>IMG2g.png</Ori><Name>21.png</Name><Url>/data/</Url></File>
<File Size="107322"><Ori>IMG3v.png</Ori><Name>g3.png</Name><Url>/data/</Url></File>
<File Size="123443"><Ori>IMG4s.png</Ori><Name>rr.png</Name><Url>/data/</Url></File>
<File Size="684443"><Ori>IMG5w.png</Ori><Name>y5.png</Name><Url>/data/</Url></File>
<File Size="140683"><Ori>IMG6g.png</Ori><Name>6w.png</Name><Url>/data/</Url></File>
</Root>';

?>

 

최종적으로 추출하고 싶은 형태는  <Url></Url> 값과 <Name></Name> 값을 이용해서 아래와 같은 결과를 얻고자 합니다.

 

<img src='/data/11.jpg'><img src='/data/21.jpg'><img src='/data/g3.jpg'><img src='/data/rr.jpg'><img src='/data/y5.jpg'><img src='/data/6w.jpg'>

 

구글링을 다수 해봤는데  xml 파일을 가져와서 추출하는 내용은 많은데

디비의 데이타를 가져와서 그것을 추출하는 형태는 보이지 않네요

결국 실력부족이라서 여러분의 도움의 손길을 기다립니다.

|

답변 2개 / 댓글 2개

채택된 답변
+20 포인트

Copy
$Files = '~~~~~~~~~~';

$xml = simplexml_load_string($Files);

foreach($xml->File as $obj){

    echo $obj->Url;
    echo $obj->Name;
}

답변에 대한 댓글 1개

구글링하면서 simplexml_load_string 이 파일을 호출할때만 사용가능한건가 생각했습니다.
호출된 데이타에도 적용이 가능한 것이었네요. 안될꺼라는 생각했는데...
소중한 시간내서 답변 감사합니다. 감동입니다.

echo preg_replace('#.+?<Name>([^<]+)</Name><Url>([^<]+)(</[^>]+>)+#', "<img src='$2$1'>", $Files);

답변에 대한 댓글 1개

슈와이님 감사합니다. 정규식 이라는 표현방식이죠?
시간을 가지고 정규식이라는것을 학습해야겠네요.
소중한 시간내서 답변 고맙습니다. 감동받았어요.

답변을 작성하려면 로그인이 필요합니다.