복붙노트

PHP를 사용하여 XML 파일을 동적으로 생성하는 방법은 무엇입니까?

PHP

PHP를 사용하여 XML 파일을 동적으로 생성하는 방법은 무엇입니까?

런타임시 xml 파일을 동적으로 생성해야합니다. PHP를 사용하여 아래 XML 파일을 동적으로 생성하는 데 도움을주십시오.

<?xml version="1.0" encoding="UTF-8"?>
<xml>
 <track>
     <path>song1.mp3</path>
     <title>Track 1 - Track Title</title>
 </track>
 <track>
     <path>song2.mp3</path>
     <title>Track 2 - Track Title</title>
 </track>
 <track>
     <path>song3.mp3</path>
     <title>Track 3 - Track Title</title>
 </track>
 <track>
     <path>song4.mp3</path>
     <title>Track 4 - Track Title</title>
 </track>
 <track>
     <path>song5.mp3</path>
     <title>Track 5 - Track Title</title>
 </track>
 <track>
     <path>song6.mp3</path>
     <title>Track 6 - Track Title</title>
 </track>
 <track>
     <path>song7.mp3</path>
     <title>Track 7 - Track Title</title>
 </track>
 <track>
     <path>song8.mp3</path>
     <title>Track 8 - Track Title</title>
 </track>

해결법

  1. ==============================

    1.SimpleXMLElement를 사용합니다.

    SimpleXMLElement를 사용합니다.

    <?php
    
    $xml = new SimpleXMLElement('<xml/>');
    
    for ($i = 1; $i <= 8; ++$i) {
        $track = $xml->addChild('track');
        $track->addChild('path', "song$i.mp3");
        $track->addChild('title', "Track $i - Track Title");
    }
    
    Header('Content-type: text/xml');
    print($xml->asXML());
    
  2. ==============================

    2.PHP에서 XML 문서를 만들려면 DOMDocument 클래스를 인스턴스화하고, 자식 노드를 만들고, 문서 노드의 올바른 분기에 이러한 노드를 추가해야합니다.

    PHP에서 XML 문서를 만들려면 DOMDocument 클래스를 인스턴스화하고, 자식 노드를 만들고, 문서 노드의 올바른 분기에 이러한 노드를 추가해야합니다.

    참고로 http://it.php.net/manual/en/book.dom.php를 읽을 수 있습니다.

    이제 아래 코드를 간단히 살펴 보겠습니다.

    이것들은 기본입니다. 한 줄에 노드를 만들고 추가 할 수 있습니다 (예 : 13 번째). dom api로 많은 다른 작업을 수행 할 수 있습니다. 너하기에 달렸다.

    <?php    
        /* create a dom document with encoding utf8 */
        $domtree = new DOMDocument('1.0', 'UTF-8');
    
        /* create the root element of the xml tree */
        $xmlRoot = $domtree->createElement("xml");
        /* append it to the document created */
        $xmlRoot = $domtree->appendChild($xmlRoot);
    
        $currentTrack = $domtree->createElement("track");
        $currentTrack = $xmlRoot->appendChild($currentTrack);
    
        /* you should enclose the following two lines in a cicle */
        $currentTrack->appendChild($domtree->createElement('path','song1.mp3'));
        $currentTrack->appendChild($domtree->createElement('title','title of song1.mp3'));
    
        $currentTrack->appendChild($domtree->createElement('path','song2.mp3'));
        $currentTrack->appendChild($domtree->createElement('title','title of song2.mp3'));
    
        /* get the xml printed */
        echo $domtree->saveXML();
    ?>
    

    편집하다: 한 가지 다른 힌트 :    XML을 인쇄하는 대신 xmldocument (dom 문서 하나 또는 simplexml 하나)를 사용하는 주된 이점은 xmltree가 xpath 쿼리로 검색 가능하다는 것입니다

  3. ==============================

    3.이렇게하는 쉬운 방법은 다음과 같습니다.

    이렇게하는 쉬운 방법은 다음과 같습니다.

    <?php
    // Send the headers
    header('Content-type: text/xml');
    header('Pragma: public');
    header('Cache-control: private');
    header('Expires: -1');
    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>";
    
    echo '<xml>';
    
    // echo some dynamically generated content here
    /*
    <track>
        <path>song_path</path>
        <title>track_number - track_title</title>
    </track>
    */
    
    echo '</xml>';
    
    ?>
    

    .php로 저장하십시오.

  4. ==============================

    4.FluidXML을 사용하면 XML을 매우 쉽게 생성 할 수 있습니다.

    FluidXML을 사용하면 XML을 매우 쉽게 생성 할 수 있습니다.

    $tracks = fluidxml('xml');
    
    $tracks->times(8, function ($i) {
        $this->add([
            'track' => [
                'path'  => "song{$i}.mp3",
                'title' => "Track {$i} - Track Title"
            ]
        ]);
    
    });
    

    https://github.com/servo-php/fluidxml

  5. ==============================

    5.Tiny But Strong 템플리트 시스템을 살펴보십시오. 그것은 일반적으로 템플릿 HTML에 사용되지만 XML 파일과 함께 작동하는 확장 기능이 있습니다. 이 코드는 하나의 코드 파일과 두 개의 템플릿 파일 (htm 및 xml)을 가질 수있는 보고서를 만드는 데 광범위하게 사용되며 사용자는 보고서를 화면 또는 스프레드 시트로 보낼지 여부를 선택할 수 있습니다.

    Tiny But Strong 템플리트 시스템을 살펴보십시오. 그것은 일반적으로 템플릿 HTML에 사용되지만 XML 파일과 함께 작동하는 확장 기능이 있습니다. 이 코드는 하나의 코드 파일과 두 개의 템플릿 파일 (htm 및 xml)을 가질 수있는 보고서를 만드는 데 광범위하게 사용되며 사용자는 보고서를 화면 또는 스프레드 시트로 보낼지 여부를 선택할 수 있습니다.

    또 다른 장점은 xml을 처음부터 코딩 할 필요가 없다는 것입니다. 어떤 경우에는 매우 큰 복잡한 스프레드 시트를 내보내려는 경향이 있습니다. 필요한 모든 내보내기를 코딩하는 대신 기존 스프레드 시트를 저장해야합니다. xml을 사용하고 데이터 출력이 필요한 코드 태그로 대체하십시오. 빠르고 효율적으로 작업 할 수 있습니다.

  6. ==============================

    6.

    $query=mysql_query("select * from tablename")or die(mysql_error()); 
    $xml="<libraray>\n\t\t";
    while($data=mysql_fetch_array($query))
    {
    
        $xml .="<mail_address>\n\t\t";
        $xml .= "<id>".$data['id']."</id>\n\t\t";
        $xml .= "<email>".$data['email_address']."</email>\n\t\t";
        $xml .= "<verify_code>".$data['verify']."</verify_code>\n\t\t";
        $xml .= "<status>".$data['status']."</status>\n\t\t";
        $xml.="</mail_address>\n\t";
    }
    $xml.="</libraray>\n\r";
    $xmlobj=new SimpleXMLElement($xml);
    $xmlobj->asXML("text.xml");
    

    그것의 간단한 당신의 프로젝트 폴더에 test.xml 파일을 만들 것입니다 귀하의 데이터베이스와 연결

  7. from https://stackoverflow.com/questions/486757/how-to-generate-xml-file-dynamically-using-php by cc-by-sa and MIT license