好。这是代码。
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查询(不包含在该片段中),以便它不输出尽可能多的结果(因此意味着不返回导致错误导致字符的结果),它可以正常工作。但是我需要这个是防弹的,所以我需要找到这个角色的解决方法......或者导致问题的任何原因。
答案 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将处理您用作文本节点的大多数字符。它还会自动将&
等实体转换为&
。所以你可能根本不需要CDATA部分。