让 simplexml 理解没有自闭合标签的输入?

Getting simplexml to understand input that have no self closing tags?

我需要一个 HTML table,包含自关闭输入标签,从客户端发送到服务器并将其解析为 simpleXML,以便将其转换为 Excel 文件通过 PHPExcel.

问题是浏览器正在从输入标签中剥离自关闭标签,这反过来在我将其传递给 simplexml_load_string 函数时产生错误。

$table = '<table><tr><td><input name="test" value="1" type="checkbox" ></td></tr></table>';
$xml = simplexml_load_string($table);

如果我可以阻止浏览器更改以下代码:

<input name="test" value="1" type="checkbox" />

至:

<input name="test" value="1" type="checkbox" >

这会解决我的问题,但我不知道或似乎无法找到如何做到这一点?

有没有办法允许 simplexml_load_string 接受没有自关闭标签的输入,或者即使我遗漏了其他内容?

http://phpfiddle.org/main/code/bw3x-zvtw

有一个技巧:the DOM extension can parse HTML, including unclosed tags like you have here; and SimpleXML can "import" a DOM object(实际上没有重新解析任何东西,因为它们在底层使用相同的内存结构)。

它应该像这样简单:

$dom = new DOMDocument;
$dom->loadHTML($html);
$sx = simplexml_import_dom($dom);