从XML中删除非法字符


Remove illegal characters from XML

如何从返回的XML字符串中删除多余的引号?

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

通常情况下,我可以获得数据"BO"、"12"、"NO"、"OFF",但额外的引号会干扰这个过程。

有没有我可以删除字符,但仍然可以获得数据?

对于Tidy XML修复解析器来说,格式错误的XML听起来是一项不错的工作:

$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