XML内容存在问题..?

时间:2010-07-16 20:52:09

标签: php xml api

好。这是代码。

XML Parsing Error: not well-formed
<item_to_page_title><![CDATA[Breaking news, real-time scores and daily analysis from Sports Illustrated  SI.com]]></item_to_page_title> 

错误跟踪行事物指向[] -like char作为问题。我已经将页面设置为UTF-8,但它仍然不起作用。

不,我不能把[]式汽车拿出来。这是我正在处理的API,所以我无法编辑内容。只交付它。有解决方法吗? CDATA标签在这里没有做任何事情..

- 编辑 -

这是输出错误中唯一的一行。这是PHP源代码:

        $output .= "<activity>\n";
        $result = mysql_query($query, $con);
        while($row = mysql_fetch_array($result)){
            $result2 = mysql_query("SELECT * FROM sites WHERE id = '".$row['u_to']."'", $con);  
            $row2 = mysql_fetch_array( $result2 );

            $output .= "<item> \n";
            $output .= "<item_type>" . $row['u_type'] . "</item_type> \n";
            $output .= "<item_to_page_id>" . $row['u_to'] . "</item_to_page_id> \n";
            $output .= "<item_to_page_url><![CDATA[".$row2['s_url']."]]></item_to_page_url> \n";
            $output .= "<item_to_page_title><![CDATA[".$row2['s_title']."]]></item_to_page_title> \n";
            $output .= "<item_date>" . $row['u_date'] . "</item_date> \n";
            $output .= "</item> \n";
        }
        $output .= "</activity>\n";

MySQL查询等工作正常。如果我限制MySQL查询(不包含在该片段中),以便它不输出尽可能多的结果(因此意味着不返回导致错误导致字符的结果),它可以正常工作。但是我需要这个是防弹的,所以我需要找到这个角色的解决方法......或者导致问题的任何原因。

1 个答案:

答案 0 :(得分:1)

尝试使用DOM,只是为了看看它是否有所作为:

$dom = new DOMDocument;
$dom->formatOutput = TRUE;
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML('<activity/>');

$result = mysql_query($query, $con);
while($row = mysql_fetch_array($result)){

    $result2 = mysql_query("SELECT * FROM sites WHERE id = '".$row['u_to']."'", $con);  
    $row2 = mysql_fetch_array( $result2 );

    $item = $dom->createElement('item');

    $item->appendChild(
        $dom->createElement('item_type', $row['u_type']));

    $item->appendChild(
        $dom->createElement('item_to_page_id', $row['u_to']));

    $cData = $dom->createCDATASection($row2['s_url']);
    $node  = $dom->createElement('item_to_page_url');
    $node->appendChild($cData);
    $item->appendChild($node);

    $cData = $dom->createCDATASection($row2['s_title']);
    $node  = $dom->createElement('item_to_page_title');
    $node->appendChild($cData);
    $item->appendChild($node);

    $item->appendChild(
        $dom->createElement('item_date', $row['u_date']));

    $dom->documentElement->appendChild($item);
}
echo $dom->saveXML();

在旁注:DOM将处理您用作文本节点的大多数字符。它还会自动将&等实体转换为&amp;。所以你可能根本不需要CDATA部分。