Heim  >  Artikel  >  Backend-Entwicklung  >  Wie konvertiere ich XML in PHP in das JSON-Format? 3 Möglichkeiten zum Teilen

Wie konvertiere ich XML in PHP in das JSON-Format? 3 Möglichkeiten zum Teilen

PHPz
PHPzOriginal
2023-03-22 10:38:482509Durchsuche

Wenn wir Daten verarbeiten, müssen wir häufig das XML-Format in das JSON-Format konvertieren. PHP verfügt über viele integrierte Funktionen, die uns bei der Durchführung dieses Vorgangs unterstützen. In diesem Artikel besprechen wir verschiedene Methoden zum Konvertieren des XML-Formats in das JSON-Format.

Methode 1: SimpleXML und json_encode verwenden

SimpleXML ist eine integrierte Erweiterung von PHP zur Verarbeitung von XML-Daten. Wir können SimpleXML verwenden, um das XML in ein Objekt in PHP zu analysieren und es mit json_encode in JSON-formatierte Daten zu kodieren.

$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;

Der obige Code gibt die folgenden Daten im JSON-Format aus:

{
   "name": "John Doe",
   "age": "25",
   "city": "New York"
}

Diese Methode ist zwar einfach und benutzerfreundlich, funktioniert aber nur mit kleinen XML-Dateien. Bei großen XML-Dateien verbraucht SimpleXML viel Speicher und kann zum Absturz des Servers führen.

Methode 2: Verwenden von DOMDocument und json_encode

Eine andere Möglichkeit, das XML-Format in das JSON-Format zu konvertieren, ist die Verwendung von DOMDocument. DOMDocument ist eine in PHP integrierte Bibliothek zur Verarbeitung von XML-Daten. Wir können das XML mit DOMDocument in ein DOM-Objekt analysieren und es in ein Array konvertieren, indem wir den DOM-Baum durchlaufen und es dann mit json_encode in JSON-formatierte Daten kodieren.

$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;
}

Der obige Code gibt die folgenden Daten im JSON-Format aus:

{
   "name": "John Doe",
   "age": "25",
   "city": "New York"
}

Durch die Verwendung von DOMDocument und benutzerdefinierten Funktionen können wir große XML-Dateien verarbeiten, ohne zu viel Speicher zu beanspruchen, und wir können während der Verarbeitung auch problemlos filtern, sortieren und ändern Daten.

Methode 3: Bibliotheken von Drittanbietern verwenden

Zusätzlich zu den offiziell bereitgestellten Funktionen gibt es weitere PHP-Plug-Ins und Erweiterungen von Drittanbietern, die uns bei der Konvertierung des XML-Formats in das JSON-Format helfen können. Sie können beispielsweise die XmlToJson-Erweiterung von PHP verwenden, um XML in JSON-formatierte Daten zu analysieren.

$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;

Der obige Code gibt Daten im folgenden JSON-Format aus:

{
   "root": {
      "name": "John Doe",
      "age": "25",
      "city": "New York"
   }
}

Die XmlToJson-Erweiterung ist eine zuverlässige, sichere und effiziente Möglichkeit, große Datenmengen zu verarbeiten und die Datenintegrität aufrechtzuerhalten.

Fazit

Egal für welche Methode Sie sich entscheiden, Sie müssen die geeignete Methode entsprechend der tatsächlichen Situation auswählen. Wenn Sie nur mit kleinen XML-Dateien arbeiten, ist die Verwendung von SimpleXML und json_encode oder DOMDocument und json_encode ebenfalls ein guter Ansatz. Wenn Sie jedoch große XML-Dateien verarbeiten müssen, ist es am besten, einen effizienten XML-Parser und benutzerdefinierte Funktionen zu verwenden, um das XML zu analysieren und in Daten im JSON-Format zu konvertieren. Was auch immer Ihre Anforderungen sind, Sie können in PHP den besten Weg finden, diese zu erfüllen.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich XML in PHP in das JSON-Format? 3 Möglichkeiten zum Teilen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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