2014-10-10 111 views
1

如何從返回的XML字符串中刪除多餘的引號?從XML中刪除非法字符

<Item Type="BO" Chan="12" " Inhibit="NO" " Manual="OFF" /> 

一般情況下我能得到的數據「BO」,「12」,「否」,「OFF」,但額外的引號與干涉這個過程。

是否有反正我可以刪除字符,但仍然獲得數據?

+1

更重要的是,有沒有什麼辦法才能避免無效的XML擺在首位?它從何而來? – Marty 2014-10-10 00:53:23

+0

(但是,如果你*絕對,絕對,100%不能糾正源*,你可以嘗試這樣的:http://regex101.com/r/jH9gL7/1)。 – Marty 2014-10-10 00:57:47

+0

嗨@馬蒂,我不能改變收到的XML字符串。它來自設備。 – tkav 2014-10-10 00:58:10

回答

1

您畸形XML時聽起來是個不錯的工作爲Tidy XML repair parser

$malformed_xml = '<Item Type="BO" Chan="12" " Inhibit="NO" " Manual="OFF" />'; 

$repaired_xml = tidy_repair_string($malformed_xml, ['input-xml' => 1]); 

$xml = simplexml_load_string($repaired_xml); 

foreach ($xml->attributes() as $key => $value) { 
    printf("%s: %s\n", $key, $value); 
} 

輸出:

Type: BO 
Chan: 12 
Inhibit: NO 
Manual: OFF 
+0

一年後回來。非常感謝你! – tkav 2015-10-05 02:51:13