1

我有以下 XML,它在 productName 节点中出现错误。我已经通过 XML Validator 运行它并删除了部分内容以尝试将其缩小到导致问题的原因,但似乎无法弄清楚是什么。有人可以帮忙吗?

<?xml version="1.0" ?> 
<product>
<prod_id>8236888</prod_id>
<productURL></productURL>
<productImageURL>2mp_hd_sdi.jpg</productImageURL>
<price>349.99</price>
<category>1646290</category>
<qtyInStock>10</qtyInStock>
<offerType>1</offerType>
<offerPrice>299.99</offerPrice>
<VAT>1</VAT>
<discount>0</discount>
<vat_rate></vat_rate>
<productName>SDI Bullet IR Camera Full HD 1080P 1920x10803.3-12mm Varifocal Lens  1/3&amp;rdquo; 2MP CMOS36 IR LEDs  Outdoor / Indoor</productName>
</product>

XML 解析错误:格式不正确 位置: http ://www.w3schools.com/xml/xml_validator.asp第 14 行,第 35 列:SDI Bullet IR Camera Full HD 1080P 1920x10803.3-12mm Varifocal Lens 1/3” 2MP CMOS36 IR LED 室外 / 室内 ----------------------------------^

4

1 回答 1

0

什么是美国分隔符

“单位分隔符”是一个值为 31(十六进制 1F)的 ASCII 控制代码。见https://en.wikipedia.org/wiki/Unit_separator#Field_separators

XML Validator 抱怨,因为它不是 XML 中的有效字符。请参阅https://en.wikipedia.org/wiki/XML#Valid_characters

以及如何在生成 XML 的 PHP 脚本中检查和删除这些?

从数据库中提取数据后,产品名称可能在某个字符串中(可能在数组或对象中)。为简单起见,假设它是变量 $product_name 的值。要从字符串中删除 US,您可以这样做:

$product_name = str_replace("\x1F", "", $product_name);

或这个:

$product_name = preg_replace( '/\x1F/', '', $product_name);

如果产品名称中可能出现其他 XML 无效的控制代码,则您必须泛化函数调用以删除这些代码。

(并确保检查其他数据库字段是否可能包含控制代码。)

于 2013-09-18T17:51:41.977 回答