首頁  >  文章  >  後端開發  >  如何有效率地迭代多維數組以進行 XML 轉換?

如何有效率地迭代多維數組以進行 XML 轉換?

Barbara Streisand
Barbara Streisand原創
2024-10-20 15:38:29541瀏覽

How to Efficiently Iterate Multidimensional Arrays for XML Transformation?

迭代多維數組進行 XML 轉換

問題

將多維數組轉換為 XML 字串是資料處理中的常見任務。考慮以下數組:

$nodes = array(
    "parent node",
    "parent node",
    array(
        "child node",
        "child node",
        array(
            "grand child node",
            "grand child node"
        )
    )
);

目標是將其轉換為類似於以下結構的XML 字串:

<node>
    <node>parent node</node>
    <node>parent node</node>
    <node>
        <node>child node</node>
        <node>child node</node>
        <node>
            <node>grand child node</node>
            <node>grand child node</node>
        </node>
    </node>
</node>

透過迭代解決方案

而遞歸函數提供可行的方法,迭代解決方案在某些情況下可以更有效。以下是使用迭代器的範例:

class TranformArrayIterator extends RecursiveIteratorIterator
{
    ... // Implementation omitted for brevity
}

此自訂迭代器允許對迭代過程進行自訂控制,包括:

  • 縮排和深度追蹤
  • 開始和結束節點
  • 將當前元素設置為XML 節點

使用迭代器:

$iterator = new TranformArrayIterator(new RecursiveArrayIterator($nodes));

foreach($iterator as $val) {
    echo $val;
}

通過XMLWriter 解決方案

對於為了更好地控制XML 生成,XMLWriter 可以用作協作者:

class TranformArrayIterator extends RecursiveIteratorIterator
{
    ... // Implementation omitted for brevity
}

$xmlWriter = new XmlWriter;
... // Configuration and initialization of XMLWriter omitted

$iterator = new TranformArrayIterator(
    $xmlWriter,
    new RecursiveArrayIterator($nodes)
);

在這種情況下,迭代器可以直接存取XMLWriter,從而能夠對生成的XML 結構進行細粒度控制。

結論

兩種迭代方法都提供了將多維數組轉換為 XML 字串的有效方法。具體選擇取決於所需的 XML 輸出控制等級。

以上是如何有效率地迭代多維數組以進行 XML 轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn