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>

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 
    ...중략
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.