Bagaimana untuk menukar xml ke format json dalam php? 3 cara untuk berkongsi

PHPz
Lepaskan: 2023-03-22 10:48:01
asal
2526 orang telah melayarinya

Apabila kami memproses data, kami sering menghadapi keperluan untuk menukar format XML kepada format JSON. PHP mempunyai banyak fungsi terbina dalam untuk membantu kami melaksanakan operasi ini. Dalam artikel ini, kami akan membincangkan kaedah yang berbeza untuk menukar format XML kepada format JSON.

Kaedah 1: Gunakan SimpleXML dan json_encode

SimpleXML ialah sambungan terbina dalam PHP untuk memproses data XML. Kita boleh menggunakan SimpleXML untuk menghuraikan XML ke dalam objek dalam PHP dan menggunakan json_encode untuk mengekodnya ke dalam data berformat JSON.

$xml = '<root><name>John Doe</name><age>25</age><city>New York</city></root>';
$simpleXML = simplexml_load_string($xml);
$json = json_encode($simpleXML);
echo $json;
Salin selepas log masuk

Kod di atas akan mengeluarkan data berikut dalam format JSON:

{
   "name": "John Doe",
   "age": "25",
   "city": "New York"
}
Salin selepas log masuk
Salin selepas log masuk

Walaupun kaedah ini mudah dan mudah digunakan, ia hanya berfungsi untuk fail XML kecil. Untuk fail XML yang besar, SimpleXML akan menggunakan banyak memori dan boleh menyebabkan pelayan ranap.

Kaedah 2: Gunakan DOMDocument dan json_encode

Cara lain untuk menukar format XML kepada format JSON ialah menggunakan DOMDocument. DOMDocument ialah perpustakaan terbina dalam PHP untuk memproses data XML. Kita boleh menghuraikan XML ke dalam objek DOM menggunakan DOMDocument dan menukarnya menjadi tatasusunan dengan melintasi pepohon DOM dan kemudian mengekodnya ke dalam data berformat JSON menggunakan json_encode.

$xml = '<root><name>John Doe</name><age>25</age><city>New York</city></root>';
$dom = new DOMDocument;
$dom->loadXML($xml);
$json = json_encode(domDocumentToArray($dom));
echo $json;

function domDocumentToArray($node) {
    $output = array();

    switch ($node->nodeType) {
        case XML_CDATA_SECTION_NODE:
        case XML_TEXT_NODE:
            $output = trim($node->textContent);
            break;

        case XML_ELEMENT_NODE:
            for ($i = 0, $m = $node->childNodes->length; $i < $m; $i++) {
                $child = $node->childNodes->item($i);
                $v = domDocumentToArray($child);
                if(isset($child->tagName)) {
                    $t = $child->tagName;
                    if(!isset($output[$t])) {
                        $output[$t] = array();
                    }
                    $output[$t][] = $v;
                }
                elseif($v) {
                    $output = (string) $v;
                }
            }
            if($node->attributes->length && !is_array($output)) { 
                $output = array('@content'=>$output); 
            }
            if(is_array($output)) {
                if($node->attributes->length) {
                    $a = array();
                    foreach($node->attributes as $attrName => $attrNode) {
                        $a[$attrName] = (string) $attrNode->value;
                    }
                    $output['@attributes'] = $a;
                }
                foreach ($output as $t => $v) {
                    if(is_array($v) && count($v)==1 && $t!='@attributes') {
                        $output[$t] = $v[0];
                    }
                }
            }
            break;
    }
    return $output;
}
Salin selepas log masuk

Kod di atas akan mengeluarkan data berikut dalam format JSON:

{
   "name": "John Doe",
   "age": "25",
   "city": "New York"
}
Salin selepas log masuk
Salin selepas log masuk

Dengan menggunakan DOMDocument dan fungsi tersuai, kami boleh memproses fail XML yang besar tanpa menggunakan terlalu banyak memori , dan kami juga boleh menapis, mengisih dan mengubah suai data dengan mudah semasa pemprosesan.

Kaedah 3: Gunakan perpustakaan pihak ketiga

Selain fungsi rasmi, terdapat pemalam PHP lain dan sambungan pihak ketiga yang boleh membantu kami menukar Format XML Dalam format JSON. Sebagai contoh, anda boleh menggunakan sambungan XmlToJson PHP untuk menghuraikan XML ke dalam data berformat JSON.

$xml = '<root><name>John Doe</name><age>25</age><city>New York</city></root>';
$parser = xml_parser_create();
xml_parse_into_struct($parser, $xml, $values, $tags);
xml_parser_free($parser);
$json = json_encode(XmlToJson::toArray($values));
echo $json;
Salin selepas log masuk

Kod di atas akan mengeluarkan data dalam format JSON berikut:

{
   "root": {
      "name": "John Doe",
      "age": "25",
      "city": "New York"
   }
}
Salin selepas log masuk

Pelanjutan XmlToJson ialah cara yang boleh dipercayai, selamat dan cekap untuk mengendalikan sejumlah besar data dan mengekalkan data seks utuh.

Kesimpulan

Tidak kira kaedah yang anda pilih, anda perlu memilih kaedah yang sesuai mengikut situasi sebenar. Jika anda hanya berurusan dengan fail XML kecil, menggunakan SimpleXML dan json_encode atau DOMDocument dan json_encode juga merupakan pendekatan yang baik. Tetapi jika anda perlu memproses fail XML yang besar, maka cara terbaik ialah menggunakan penghurai XML yang cekap dan fungsi tersuai untuk menghuraikan XML dan menukarnya kepada data format JSON. Tidak kira apa keperluan anda, anda boleh mencari cara terbaik untuk memenuhinya dalam PHP.

Atas ialah kandungan terperinci Bagaimana untuk menukar xml ke format json dalam php? 3 cara untuk berkongsi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan