REST接口的XML结果的可用性与可读性

时间:2016-04-05 08:45:05

标签: xml rest

早上的人,

如果它们是可读的或xml安全的,我在使用xml中的REST服务返回某些值时会遇到两难的问题。考虑一下" Jill&鲍勃"

人类可读:

<ModelItem>
   <Name>Jill &amp; Bob</Name>
</ModelItem>

XML安全:

<ModelItem>
   <Name>Jill & Bob</Name>
   <link>http://myweb.com/showitem?id=123&order=desc</link>
</ModelItem>

如果我要在我的xml中返回一个url,这就变成了一个问题:

<ModelItem>
   <Name>Jill & Bob</Name>
   <link>http://myweb.com/showitem?id=123&amp;porder=desc</link>
</ModelItem>

如果我然后返回xml安全网址,我的网址不再是有效网址:

        $idProduct = 54;
        $idImage = 26;
        //$url = "http://192.168.1.124/prestashop/api/images/products/" . $idProducto . "/"; //Uncomment this line to add an image
        $url = "http://192.168.1.124/prestashop/api/images/products/" . $idProduct . "/".$idImage."?ps_method=PUT";

        $image_path = 'C:\\camisa2.jpg';
        $key = 'XXXXXXXXXXXXXXXXXXX'; //Prestashop key

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_POST, true);
        //curl_setopt($ch, CURLOPT_PUT, true); // Un-commet to edit an image
        curl_setopt($ch, CURLOPT_USERPWD, $key.':');
        curl_setopt($ch, CURLOPT_POSTFIELDS, array('image' => '@'.$image_path.';type=image/jpg'));
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $result = curl_exec($ch);
        curl_close($ch);


        echo "<h3>Image Updated</h3>";

2 个答案:

答案 0 :(得分:1)

您的“人类可读”示例不是有效的XML,因为单个&不是有效的XML实体。

每个使用正确XML的客户都必须能够理解&amp;之类的XML实体(请注意;!)并改为显示正确的字符。

答案 1 :(得分:0)

在从XML序列化或反序列化时,数据会有一个不可见的边框。因此,当您想要访问<link>元素的值时,请确保您不在XML字符串中进行搜索,而是执行&#34; real&#34;在访问文本内容之前反序列化(到DOM或其​​他)。否则你必须自己处理字符/实体编码之类的事情,你不应该这样做,因为反序列化器应该为你做这类事情。