【发布时间】:2015-09-03 04:23:29
【问题描述】:
在我的 test.xml 文件中,我有多个 Field 节点,如下所示:
<?xml version="1.0" encoding="iso-8859-1"?>
<Fields>
<Field>
<ID>01258</ID>
<Name>abc</Name>
<Contact>Contact One</Contact>
</Field>
<Field>
<ID>52458</ID>
<Name>def</Name>
<Contact>Contact Two</Contact>
</Field>
<Field>
<ID>74287</ID>
<Name>xyz</Name>
<Contact>Contact Three</Contact>
</Field>
</Fields>
我想通过 cURL 将每个 Field 节点一次发送一个到 API。这就是我在我的 PHP 中所做的:
<?php
$inputFilename = 'test.xml';
$url = 'http://api-url......' // API URL
$xml = simplexml_load_file($inputFilename);
foreach($xml->Field as $field) {
$input_xml = '<Field>'.$field.'</Field>';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $input_xml);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
}
现在我有一个问题。 $input_xml 似乎没有保存正确的 xml。当我运行这段代码时,我得到了这个错误:
XML Parsing Error: junk after document element
.....
Line Number 10, Column 8:
</Field><Field>
--------------^
我该如何解决这个问题?如何确保$field 实际输出的是 xml?
【问题讨论】:
-
使用 var_dump 检查 $field 是什么。您可能必须将其转换为
$field = (string)$field;之类的字符串