질문 Q #22534
CI XML 파싱 시 특수문자(대시)가 먹히지 않는 현상
DominicKim 2020-07-16 17:29:39

안녕하세요.

현재 파서 개발 중에 문제가 발생해서 질문 한가지만 여쭙고자 글을 작성해봅니다.

XML 자체의 틀을 변경하는 것은 불가능하고, 함수로써 해결해야 하는데요.

기존 다른 파서의 경우 아래 강조한 부분과 같이 " - " 특수문자가 없었는데.

이번 파일의 경우 대시 기호가 문제가 되네요.

 

해당 문제를 $string = "executive-summary";

$xml->content->$string 와 같은 방식으로 해결해보려고 했으나 아무런 값도 나오지 않습니다.

특수한 방법이 필요할 것 같은데. 제가 접근 방식이 잘못된 건지 해결을 할 수 가 없네요.

해외 포럼이나 국내 블로그에선 찾아보기가 어렵네요ㅜㅜ

 

고수님들께 자문을 구해봅니다 !!! 

 

xml data


<xml-report name="AppScan Report" technology="DAST" xmlExportVersion="2.42">

  <content>

    <executive-summary>1</executive-summary>

    <issues>1</issues>

    <table-of-content>1</table-of-content>

    <introduction>1</introduction>

    <by-url>0</by-url>

    <fix-recommendations>1</fix-recommendations>

    <variants>1</variants>


 

code

 


print_r($xml->content->executive-summary);   // 강조한 부분에서 에러 발생, 대시를 수학기호로 착각해 마이너스 하려고 하는 것 같음


 

error message


Use of undefined constant summary - assumed 'summary' (this will throw an Error in a future version of PHP)


 

답변 3
#1 DominicKim 2020-07-16 18:22:41
        $xml = simplexml_load_string($object);
        $json = json_encode($xml);
        $array = json_decode($json, TRUE);
#2 DominicKim 2020-07-16 18:23:02
xml 에 대한 집착을 버리고 json 형식으로 변환 후 문제해결하였습니다.
#3 한대승(불의회상) 2020-07-16 20:47:30

사족으로...

$array = json_decode(json_encode($xml), TRUE);

하면 변수 하나 줄일수 있을듯... ^^