2011-12-06 55 views
1

我有一个生成XML文档的php脚本,但是输出有一个奇怪的问题。无效字符随机出现在XML输出中,包括标签内

我在整个文档中看到随机字符,即使在标签本身中也是如此?例如:

<id><![CATA[JS-DWLG001]]></id> 

我不知道这将如何在浏览器中呈现,因此,如果您不能看到它,无效字符替换“d”在“CDATA”。

任何想法?

编辑:这里是代码的业务比特,以产生XML:

<? 
// variables and arrays populated here from db 
?> 

<job> 
       <title><![CDATA[<?=$field['vac_Title']?>]]></title> 
       <date><![CDATA[<?=date("D, j M Y g:i:s",$stamp)." GMT"?>>]]></date> 
       <referencenumber><![CDATA[<?=$field['vac_Ref']?>]]></referencenumber> 
       <url><![CDATA[<?=site_URL.parse_job_path($field['vac_Title'],$key)?>]]></url> 
       <company><![CDATA[<?=$field['vac_advertiser_name']?>]]></company> 
       <city><![CDATA[]]></city> 
       <state><![CDATA[<?=$field['vac_locs']?>]]></state> 
       <country><![CDATA[UK]]></country> 
       <postalcode><![CDATA[]]></postalcode> 
       <description><![CDATA[<?=$field['vac_Description']?>]]></description> 
       <salary><![CDATA[<?-$field['vac_Salary-Range']?>]]></salary> 
       <education><![CDATA[<?=$education_level?>>]]></education> 
       <jobtype><![CDATA[<?=$emp_type?>]]></jobtype> 
       <category></category> 
       <experience></experience> 
      </job> 
+0

你可以给PHP脚本的样本? – Ryan

+0

您在ID上发布了错误,并且字段ID不在另一位... –

+0

对不起,我应该说明我们有五种不同的脚本,它们会生成稍微不同的XML输出,但都与上述类似。所有五个文件的输出中都会出现无效字符,看起来像所描述的那样是随机的。我刚刚给出了'id'这一行,作为一个例子,说明这个字符实际上是如何出现在XML标签中的,而不仅仅是它们包含的数据。 – user1083820

回答

0

在PHP脚本中它通常产生问题,当我们试图用追加字符串生成XML。您的输出可能有一些特殊和unicode字符。所以它总是一个好主意,使用核心php提供的库。就像你可以使用DOM XML来生成XML一样。这将处理您的特殊字符和格式。 这里是XML DOM示例代码

<?php 
$books = array(); 
$books [] = array(
    'title' => 'PHP Hacks', 
    'author' => 'Jack Herrington', 
    'publisher' => "O'Reilly" 
    ); 

$doc = new DOMDocument(); 
$doc->formatOutput = true; 

$r = $doc->createElement("books"); 
$doc->appendChild($r); 

foreach($books as $book) 
{ 
    $b = $doc->createElement("book"); 

    $author = $doc->createElement("author"); 
    $author->appendChild(
     $doc->createTextNode($book['author']) 
     ); 
    $b->appendChild($author); 

    $title = $doc->createElement("title"); 
    $title->appendChild(
     $doc->createTextNode($book['title']) 
     ); 
    $b->appendChild($title); 

    $publisher = $doc->createElement("publisher"); 
    $publisher->appendChild(
     $doc->createTextNode($book['publisher']) 
     ); 
    $b->appendChild($publisher); 

    $r->appendChild($b); 
} 
header('Content-type: text/xml;charset=UTF-8'); 

echo $doc->saveXML(); 
?> 

希望这将解决您的问题