[英]Parse XML data to JSON
在我們的環境中,我們使用帶有存儲過程的MS SQL。 在這些過程中,我們以XML形式返回結果,並在需要時訪問數據。
我正在向我們的第三方工具介紹一些圖表,這些圖表需要特定的格式才能進行操作,但我遇到了問題。
在此屏幕截圖中,您可以看到結構看起來應該是什么樣的,我可以很好地使用該插件。 問題在於SimpleXML如何處理單個結果集。
如下圖所示,帶有一個結果項,它不再格式化為數組。 問題在於,該插件希望在第一個示例中以該格式查找數據,但是當只有一個值時,它不會將其存儲為數組。
從該圖像可以看到, escalationTypes
的數據集采用的數組格式不是下面的submittedByDepartment
。
我正在嘗試使用SimpleXML找出是否可以解決此問題的根源。 這是帶有解決方法的SimpleXML
的常見問題嗎?
UPDATE
這是我正在使用的XML對象的示例: http : //pastebin.com/uPh0m3qX
我不是100%清楚您所需的結構是什么,但是總的來說,直接從XML轉換為JSON或反之亦然不是一個好主意。 兩者都可以以多種方式表示數據,而您真正想要的是從一種數據中提取數據並將其轉換為另一種數據。
請注意,這就是SimpleXML旨在幫助您的-它從不包含任何數組,但是為您提供了一個API ,可幫助您提取所需的數據。
如果我理解正確,則希望從每個dataset
元素構建一個數組,並將其放入JSON中,因此需要以下內容:
foreach ( $xml->children() as $item_name => $item ) {
foreach ( $item->dataset as $dataset ) {
$json[$item_name]['dataset'] = (array)$dataset->attributes();
}
}
請注意,如果只有一個項目要循環,則這些循環都不會有不同的行為。 SimpleXML根據使用方式而不是基於XML的外觀來決定其行為類似於數組還是對象。
請注意,雖然您可以構建更通用的XML到數組(或XML到JSON)功能,但要使其始終提供任何輸入所需的輸出,則可能會花費更多時間,並且比編寫特定的代碼會導致難以調試的代碼像上面的代碼。
您可以通過在引用變量之前添加(數組)來將對象聲明為數組。 (array)$wasobject
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.