php xml 데이터 처리 문제입니다.


안녕하세요.

다름이 아니라 a.xml이란 파일에 있는 값중 중복되는 데이터가 있을경우 그 중복된 데이터 중에 하나를 삭제하고 다른 하나는 가지고 가고싶은데 php로 어떤식으로 해야 될까요...

a.xml

<?xml version="1.0" encoding="UTF-8"?>
<DATA>
    <ROW>
        <LOC>KOR</LOC>
        <YMD>20160215</YMD>
        <HMD>082726</HMD>
        <FLOORID>1</FLOORID>
        <AREAID>1</AREAID>
        <SCALECD>000001</SCALECD>
        <WEIGHT>500</WEIGHT>
        <MACADDR>D7:54:27:34:70:28</MACADDR>
        <OFFSET>2</OFFSET>
    </ROW>
    <ROW>
        <LOC>KOR</LOC>
        <YMD>20160215</YMD>
        <HMD>082726</HMD>
        <FLOORID>1</FLOORID>
        <AREAID>1</AREAID>
        <SCALECD>000001</SCALECD>
        <WEIGHT>500</WEIGHT>
        <MACADDR>D7:54:27:34:70:28</MACADDR>
        <OFFSET>2</OFFSET>
    </ROW>
    <ROW>
        <LOC>KOR</LOC>
        <YMD>20160215</YMD>
        <HMD>082726</HMD>
        <FLOORID>1</FLOORID>
        <AREAID>1</AREAID>
        <SCALECD>000003</SCALECD>
        <WEIGHT>600</WEIGHT>
        <MACADDR>D7:54:27:34:70:28</MACADDR>
        <OFFSET>3</OFFSET>
    </ROW>
    <ROW>
        <LOC>KOR</LOC>
        <YMD>20160215</YMD>
        <HMD>082726</HMD>
        <FLOORID>1</FLOORID>
        <AREAID>1</AREAID>
        <SCALECD>000003</SCALECD>
        <WEIGHT>600</WEIGHT>
        <MACADDR>D7:54:27:34:70:28</MACADDR>
        <OFFSET>3</OFFSET>
    </ROW>
</DATA>
  • 2016년 02월 16일에 작성됨

조회수 308


1 답변


http://www.w3schools.com/xml/cd_catalog.xml 에 있는 예제를 가지고 만들어 봤는데요. 이렇게 하고 나면 data에 값이 다른것들만 들어가도록 되어 있습니다. 같은거는 하나로 합쳐지구요. 아래 예제에서 CD만 ROW로 바꿔주면 될 것 같은데요.

같다는것의 기준은 ROW에 들어있는것들의 모든 값이 같으면 같다고 봤어요.

$xmlDoc = new DOMDocument();
$xmlDoc->load("http://www.w3schools.com/xml/cd_catalog.xml");

$elements = $xmlDoc->getElementsByTagName('CD');
$data = array();
foreach($elements as $node){
    $row = array();
    $hash = "";
    foreach($node->childNodes as $child) {
        array_push($row,$child->nodeValue);
        $hash = $hash.$child->nodeValue;
    }
    print_r($row);
    echo("<BR>");   
    print_r($hash);
    echo("<BR>");
    $data[$hash]=$row;
}

출력은 다음과 같이 나옵니다.

Array ( [0] => [1] => Empire Burlesque [2] => [3] => Bob Dylan [4] => [5] => USA [6] => [7] => Columbia [8] => [9] => 10.90 [10] => [11] => 1985 [12] => )
Empire Burlesque Bob Dylan USA Columbia 10.90 1985
Array ( [0] => [1] => Hide your heart [2] => [3] => Bonnie Tyler [4] => [5] => UK [6] => [7] => CBS Records [8] => [9] => 9.90 [10] => [11] => 1988 [12] => )
Hide your heart Bonnie Tyler UK CBS Records 9.90 1988
Array ( [0] => [1] => Greatest Hits [2] => [3] => Dolly Parton [4] => [5] => USA [6] => [7] => RCA [8] => [9] => 9.90 [10] => [11] => 1982 [12] => )
Greatest Hits Dolly Parton USA RCA 9.90 1982 
...중략
  • 2016년 02월 16일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close