>  기사  >  백엔드 개발  >  PHP에서 XML 파일을 생성하는 4가지 방법

PHP에서 XML 파일을 생성하는 4가지 방법

巴扎黑
巴扎黑원래의
2016-11-24 09:45:491056검색

<?xml version="1.0" encoding="utf-8"?>
<article>
    <item>
        <title size="1">title1</title>
        <content>content1</content>
        <pubdate>2009-10-11</pubdate>
    </item>
    <item>
        <title size="1">title2</title>
        <content>content2</content>
        <pubdate>2009-11-11</pubdate>
    </item>
</article>

[직접 문자열 생성]
방법 1: 순수 PHP 코드를 사용하여 문자열을 생성하고, 접미사가 XML인 파일에 문자열을 씁니다. 이는 XML을 생성하는 가장 원시적인 방법이지만 작동합니다!
PHP 코드는 다음과 같습니다.

Php 코드

<?PHP  
$data_array = array(  
    array(  
    &#39;title&#39; => &#39;title1&#39;,  
    &#39;content&#39; => &#39;content1&#39;,  
        &#39;pubdate&#39; => &#39;2009-10-11&#39;,  
    ),  
    array(  
    &#39;title&#39; => &#39;title2&#39;,  
    &#39;content&#39; => &#39;content2&#39;,  
    &#39;pubdate&#39; => &#39;2009-11-11&#39;,  
    )  
);  
$title_size = 1;  
  
$xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";  
$xml .= "<article>\n";  
  
foreach ($data_array as $data) {  
$xml .= create_item($data[&#39;title&#39;], $title_size, $data[&#39;content&#39;], $data[&#39;pubdate&#39;]);  
}  
  
$xml .= "</article>\n";  
  
echo $xml;  
  
//  创建XML单项  
function create_item($title_data, $title_size, $content_data, $pubdate_data)  
{  
    $item = "<item>\n";  
    $item .= "<title size=\"" . $title_size . "\">" . $title_data . "</title>\n";  
    $item .= "<content>" . $content_data . "</content>\n";  
    $item .= " <pubdate>" . $pubdate_data . "</pubdate>\n";  
    $item .= "</item>\n";  
  
    return $item;  
}  
  
?>


[DomDocument]
방법 2: DomDocument를 사용하여 XML 파일 생성
createElement 메소드를 사용하여 노드 생성,
createTextNode 메소드를 사용하여 텍스트 콘텐츠 생성,
appendChild 메소드를 사용하여 하위 노드 추가,
createAttribute 메소드를 사용하여 속성 생성
PHP 코드는 다음과 같습니다.

Php 코드

<?PHP  
$data_array = array(  
    array(  
    &#39;title&#39; => &#39;title1&#39;,  
    &#39;content&#39; => &#39;content1&#39;,  
        &#39;pubdate&#39; => &#39;2009-10-11&#39;,  
    ),  
    array(  
    &#39;title&#39; => &#39;title2&#39;,  
    &#39;content&#39; => &#39;content2&#39;,  
    &#39;pubdate&#39; => &#39;2009-11-11&#39;,  
    )  
);  
  
//  属性数组  
$attribute_array = array(  
    &#39;title&#39; => array(  
    &#39;size&#39; => 1  
    )  
);  
  
//  创建一个XML文档并设置XML版本和编码。。  
$dom=new DomDocument(&#39;1.0&#39;, &#39;utf-8&#39;);  
  
//  创建根节点  
$article = $dom->createElement(&#39;article&#39;);  
$dom->appendchild($article);  
  
foreach ($data_array as $data) {  
    $item = $dom->createElement(&#39;item&#39;);  
    $article->appendchild($item);  
  
    create_item($dom, $item, $data, $attribute_array);  
}  
  
echo $dom->saveXML();  
  
function create_item($dom, $item, $data, $attribute) {  
    if (is_array($data)) {  
        foreach ($data as $key => $val) {  
            //  创建元素  
            $$key = $dom->createElement($key);  
            $item->appendchild($$key);  
  
            //  创建元素值  
            $text = $dom->createTextNode($val);  
            $$key->appendchild($text);  
  
            if (isset($attribute[$key])) {  
            //  如果此字段存在相关属性需要设置  
                foreach ($attribute[$key] as $akey => $row) {  
                    //  创建属性节点  
                    $$akey = $dom->createAttribute($akey);  
                    $$key->appendchild($$akey);  
  
                    // 创建属性值节点  
                    $aval = $dom->createTextNode($row);  
                    $$akey->appendChild($aval);  
                }  
            }   //  end if  
        }  
    }   //  end if  
}   //  end function  
?>


[XMLWriter]
방법 3: XMLWriter 클래스를 사용하여 XML 파일 생성
이 방법은 PHP 5.1.2부터 유효합니다.
또한 여러 인코딩 XML을 출력할 수 있지만 입력은 utf-8만 가능합니다.
PHP 코드는 다음과 같습니다.

Php 코드

<?PHP  
$data_array = array(  
    array(  
    &#39;title&#39; => &#39;title1&#39;,  
    &#39;content&#39; => &#39;content1&#39;,  
        &#39;pubdate&#39; => &#39;2009-10-11&#39;,  
    ),  
    array(  
    &#39;title&#39; => &#39;title2&#39;,  
    &#39;content&#39; => &#39;content2&#39;,  
    &#39;pubdate&#39; => &#39;2009-11-11&#39;,  
    )  
);  
  
//  属性数组  
$attribute_array = array(  
    &#39;title&#39; => array(  
    &#39;size&#39; => 1  
    )  
);  
  
$xml = new XMLWriter();  
$xml->openUri("php://output");  
//  输出方式,也可以设置为某个xml文件地址,直接输出成文件  
$xml->setIndentString(&#39;  &#39;);  
$xml->setIndent(true);  
  
$xml->startDocument(&#39;1.0&#39;, &#39;utf-8&#39;);  
//  开始创建文件  
//  根结点  
$xml->startElement(&#39;article&#39;);  
  
foreach ($data_array as $data) {  
    $xml->startElement(&#39;item&#39;);  
  
    if (is_array($data)) {  
        foreach ($data as $key => $row) {  
          $xml->startElement($key);  
  
          if (isset($attribute_array[$key]) && is_array($attribute_array[$key]))  
          {  
              foreach ($attribute_array[$key] as $akey => $aval) {  
              //  设置属性值  
                    $xml->writeAttribute($akey, $aval);  
                }  
  
            }  
  
            $xml->text($row);   //  设置内容  
            $xml->endElement(); // $key  
        }  
  
    }  
    $xml->endElement(); //  item  
}  
  
$xml->endElement(); //  article  
$xml->endDocument();  
  
$xml->flush();  
?>



【 SimpleXML]
방법 4: SimpleXML을 사용하여 XML 문서 생성

PHP 코드

<?PHP  
$data_array = array(  
    array(  
    &#39;title&#39; => &#39;title1&#39;,  
    &#39;content&#39; => &#39;content1&#39;,  
        &#39;pubdate&#39; => &#39;2009-10-11&#39;,  
    ),  
    array(  
    &#39;title&#39; => &#39;title2&#39;,  
    &#39;content&#39; => &#39;content2&#39;,  
    &#39;pubdate&#39; => &#39;2009-11-11&#39;,  
    )  
);  
  
//  属性数组  
$attribute_array = array(  
    &#39;title&#39; => array(  
    &#39;size&#39; => 1  
    )  
);  
  
$string = <<<XML  
<?xml version=&#39;1.0&#39; encoding=&#39;utf-8&#39;?>  
<article>  
</article>  
XML;  
  
$xml = simplexml_load_string($string);  
  
foreach ($data_array as $data) {  
    $item = $xml->addChild(&#39;item&#39;);  
    if (is_array($data)) {  
        foreach ($data as $key => $row) {  
          $node = $item->addChild($key, $row);  
  
          if (isset($attribute_array[$key]) && is_array($attribute_array[$key]))  
            {  
              foreach ($attribute_array[$key] as $akey => $aval) {  
             //  设置属性值  
                  $node->addAttribute($akey, $aval);  
            }  
          }  
        }  
    }  
}  
echo $xml->asXML();  
?>


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.