我有一些来自服务器的XML响应,但它们没有root元素,因为我无法使用新的SimpleXML解析它们,所以我需要创建一个根元素然后添加所有这些xml到这个创建了根元素
$res = bill_curl('GetAccounts'); //getting a list of accounts WITHOUT the <root> xml
$xml = new SimpleXMLElement("<root></root>"); // creating a root element
$xml->addChild($res); // adding to the <root> childrens
但问题是:
1)"<!--?xml version="1.0" encoding="UTF-8"?-->"
保持在内部,同样位于文档的顶部
2)得到一些像“&lt;”,“/&gt;”这样的符号如何删除它们?
更新
<document>
<answer>
<account>12345678</account>
<info>someinfo</info>
</answer>
<answer>
<account>23456789</account>
<info>some info</info>
</answer>
</document>
这是我在字符串操作之后得到的,然后我做了:
$xml = new SimpleXMLElement($str);
这里我得到一个错误的开始和结束标签不匹配,我在这里缺少什么?
答案 0 :(得分:0)
我并不是特别热衷于这种解决方案的脆弱性。但是,听起来你正在整合有缺陷的API,所以我建议一些基本的字符串操作来获得你想要的东西:
$str = '<?xml version="1.0" encoding="UTF-8"?><testing>2</testing><test2>1</test2>';
// the above was a test string to represent the results of the below:
$str = bill_curl('GetAccounts');
// Switch the search string below with the actual doctype you're getting from the API.
// It looks to have been commented out in your question which may or may not be the case.
$str = str_replace('<?xml version="1.0" encoding="UTF-8"?>', '', $str);
$str = '<root>'.$str.'</root>';
$xml = new SimpleXMLElement($str);
var_dump($xml);