gpt4 book ai didi

javascript - 无效的 XML 格式 - 如何避免这种情况

转载 作者:行者123 更新时间:2023-11-28 04:30:49 24 4
gpt4 key购买 nike

我正在从 PHP/mysql 中的数据库获取数据,其中包含无效字符,例如 &。我按如下方式创建 XML:

$stmt->bind_result($foo)|| fail('An error occurred: MySQL bind_result', $db->error);

$foo=htmlspecialchars($foo, ENT_XML1, 'UTF-8');


$xmlstr = "<?xml version="1.0" encoding="UTF-8" standalone="yes">
<xml>";
while ($stmt->fetch())
{ $xmlstr.="
<RECORD>
<FOO>$foo</FOO>
</RECORD>";}
$xmlstr.="
</xml>";

$stmt->close();

echo $xmlstr;

我正在尝试接收数据并使用 javascript 将其放入数组中 - 但它给我错误无效的 XML 格式。我收到随机记录,有时它确实有效。所以在我看来,问题出在来自数据库的字符上。

错误发生在 JavaScript 中:

var foo;
var formData = "label="+label; //Name value Pair

$.ajax({
url: './php/foo.php',
type: 'POST',
data : formData,
dataType: 'xml',
success: function(returnedXMLResponse){


$('RECORD', returnedXMLResponse).each(function(){
foo = $('FOO', this).text();

})
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log("Status: " + textStatus); console.log("Error: " + errorThrown);
}
});

最佳答案

你可以使用 XMLWriter以确保正确的编码等。

<?php
$stmt = new Dummy;
$stmt->bind_result($foo);

$xml = new XMLWriter();
$xml->openURI('php://output');
$xml->setIndent(true);
$xml->startDocument();

$xml->startElement("xml");
while ( $stmt->fetch() ) {
$xml->startElement("RECORD");
$xml->writeElement('FOO', $foo);
$xml->endElement(); // RECORD
}
$xml->endElement(); // xml


class Dummy {
public function bind_result(&$var) {
$this->var = &$var;
}

public function fetch() {
static $arr = array('Barnes & Noble', 'Barnum & Bailey', "Buy'n'Large");
if ( current($arr) ) {
$this->var = current($arr);
next($arr);
return true;
}
return false;
}
}

关于javascript - 无效的 XML 格式 - 如何避免这种情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065439/

24 4 0
文章推荐: html -