4 Möglichkeiten, XML-Dateien in PHP zu generieren

巴扎黑
Freigeben: 2016-11-24 09:45:49
Original
1055 Leute haben es durchsucht

<?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>
Nach dem Login kopieren

[String direkt generieren]
Methode 1: Verwenden Sie reinen PHP-Code, um einen String zu generieren, und schreiben Sie den String in eine Datei mit XML als Suffix. Dies ist die primitivste Methode zum Generieren von XML, aber sie funktioniert!
PHP-Code lautet wie folgt:

PHP-Code

<?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;  
}  
  
?>
Nach dem Login kopieren


[DomDocument]
Methode 2: Verwenden Sie DomDocument, um eine XML-Datei zu generieren
Erstellen Sie einen Knoten zur Verwendung der Methode „createElement“,
Erstellen Sie Textinhalte mithilfe der Methode „createTextNode“,
Fügen Sie untergeordnete Knoten mithilfe der Methode „appendChild“ hinzu,
Erstellen Sie Attribute mithilfe der Methode „createAttribute“
Der PHP-Code lautet wie folgt:

PHP-Code

<?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  
?>
Nach dem Login kopieren


[XMLWriter]
Methode 3: Verwenden Sie die XMLWriter-Klasse, um XML-Dateien zu erstellen
Diese Methode ist nach PHP 5.1.2 gültig
Darüber hinaus kann es XML mit mehreren Kodierungen ausgeben, die Eingabe kann jedoch nur UTF-8 sein.
PHP-Code lautet wie folgt:

PHP-Code

<?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();  
?>
Nach dem Login kopieren



【 SimpleXML]
Methode 4: XML-Dokument mit SimpleXML erstellen

PHP-Code

<?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();  
?>
Nach dem Login kopieren


Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage