2014-10-10 80 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