본문 바로가기
PHP

[PHP]SimpleXML 로 XML 파일 데이터 가져오기

by teamnova 2022. 6. 30.

안녕하세요.

오늘은 php 로 'SimpleXML' 기능을 사용해서 xml 데이터를 불러오는 예제를 진행해보겠습니다.

 

SimpleXML은 문자 그대로 XML을 사용하기 위한 간단한 기능입니다. XML, 텍스트 등의 파일에서 데이터를 읽고, 'SimpleXMLElement' 클래스 인스턴스를 만듭니다. 그 후, 오브젝트에 있는 메소드 등을 사용해서 데이터를 처리하게 됩니다.

 

$변수 = simplexml_load_file(파일);    //XML 파일로 객체생성
$변수 = simplexml_load_string(텍스트); //텍스트 값에서 객체생성
$변수 = new SimpleXMLElement(데이터, 옵션, 부울); // 함수 호출이 아닌 방식으로 객체 생성

함수가 아닌 new 를 통한 객체생성에서 첫번째 인수는 XML 데이터입니다. 텍스트나 URL 로 지정이 가능합니다.

옵션은 기본이 0 으로 옵션이 없음을 나타냅니다. 세번째 인수는 XML 데이터 파일 여부를 나타냅니다. 텍스트로 지정한다면 false, URL 로 지정을 한다면 ture 입니다. URL로 파일에서 데이터를 가져오는 경우에 false를 넣는다면 객체생성에 실패하게 됩니다.

 

 

먼저 데이터를 불러올 xml 파일을 작성합니다.

//textData.xml

<?xml version="1.0" encoding="UTF-8"?>
<datas>
    <data>
        <name>Safari</name>
        <version>10</version>
        <company>Apple</company>
    </data>
    <data>
        <name>Chrome</name>
        <version>20.5</version>
        <company>Google</company>
    </data>
    <data>
        <name>Firefox</name>
        <version>30</version>
        <price>Mozilla</price>
    </data>
</datas>

 

 

이제 xml 파일을 가져와서 데이터를 출력해보겠습니다.

 

//test.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset = "utf-8">
    </head>
    <body>
        <div>
            <span>Test XML!!!</span>
            <table>
                <tr><th>Name</th><th>Version</th><th>Company</th></tr>
                    <?php 
                        $data = "";
                        $xml = simplexml_load_file('./testData.xml','SimpleXMLElement',LIBXML_NOCDATA);
                        
                        $arr = $xml -> data;
                        
                        foreach($arr as $row){
                            $data .= "<tr>";
                            $data .= "<td>" . $row->name . "</td>";
                            $data .= "<td>" . $row->version . "</td>";
                            $data .= "<td>" . $row->company . "</td>";
                            $data .= "</tr>";
                        }
                    ?>
                <?php echo $data; ?>
            </table>
        </div>
    </body>
</html>

 

test.php를 브라우저로 열어보면 다음과 같이 데이터가 출력됩니다.