將多維數組轉換為 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 }
此自訂迭代器允許對迭代過程進行自訂控制,包括:
使用迭代器:
$iterator = new TranformArrayIterator(new RecursiveArrayIterator($nodes)); foreach($iterator as $val) { echo $val; }
對於為了更好地控制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中文網其他相關文章!