SimpleXML オブジェクトを効率的に配列に変換し、属性を保持する方法

Mary-Kate Olsen
リリース: 2024-10-27 08:11:02
オリジナル
199 人が閲覧しました

How to Convert a SimpleXML Object to an Array Efficiently and Preserve Attributes?

SimpleXML オブジェクトの配列への変換: より効率的なアプローチ

SimpleXML オブジェクトの配列への変換は、XML データの操作に役立ちますより効率的に。ただし、最初の質問で説明した方法では、JSON のエンコードとデコードが必要になり、面倒になる可能性があります。同じことを実現するための改良されたアプローチを次に示します。

function xmlstring2array($string) {

$xml = simplexml_load_string($string);
return xml2array($xml);
ログイン後にコピー

}

function xml2array($xmlObject) {

foreach ((array) $xmlObject as $index => $node) {
    if (is_object($node)) {
        $out[$index] = xml2array($node);
    } else {
        $out[$index] = $node;
    }
}
return $out;
ログイン後にコピー

}

この改訂された関数 xml2array() は、SimpleXML オブジェクトを再帰的に反復し、構造を維持しながらノードを配列に変換します。これにより、JSON のエンコードとデコードのオーバーヘッドが回避され、より効率的かつ堅牢になります。

XML を配列に変換するときに、元の関数は属性を失いました。ただし、xml2array():

foreach ((array) $xmlObject as $index => $node) {

...
if (is_object($node)) {
    $out[$index] = xml2array($node);
} else if ($node instanceof SimpleXMLElement) {
    $attrs = $node->attributes();
    if (count($attrs) > 0) {
        $out[$index] = (array) $node;
        foreach ($attrs as $attrName => $attrValue) {
            $out[$index][$attrName] = (string) $attrValue;
        }
    } else {
        $out[$index] = (string) $node;
    }
}
...
ログイン後にコピー
のループ内で SimpleXML のattributes() メソッドを使用することで属性を保持できます。

}

これらの改善を組み込むことで、構造と属性の両方を保持しながら、SimpleXML オブジェクトをより効率的に配列に変換できます。

以上がSimpleXML オブジェクトを効率的に配列に変換し、属性を保持する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!