1

我有一些来自服务器的 XML 响应,但它们没有根元素,因为我无法用新的 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) 得到一些像“<”、“/>”这样的符号如何去除它们?

更新:

  <document>
              <answer>
            <account>12345678</account>
            <info>someinfo</info>
            </answer>
             <answer>
            <account>23456789</account>
        <info>some info</info>
           </answer>
   </document>

这是我在字符串操作之后得到的,然后我做了:

$xml = new SimpleXMLElement($str);

在这里我得到一个开始和结束标签不匹配的错误,我在这里缺少什么?

4

1 回答 1

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);
于 2013-04-02T08:51:56.000 回答