Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php XML输出中随机出现的无效字符,包括标记中的字符_Php_Xml - Fatal编程技术网

Php XML输出中随机出现的无效字符,包括标记中的字符

Php XML输出中随机出现的无效字符,包括标记中的字符,php,xml,Php,Xml,我有一个生成XML文档的php脚本,但是输出有一个奇怪的问题 在整个文档中,甚至在标记本身中,我似乎都随机获得了无效字符?例如: <id><![CATA[JS-DWLG001]]></id> 我不确定这将如何在您的浏览器中呈现,因此如果您看不到它,则无效字符将替换“CDATA”中的“D” 有什么想法吗 编辑:以下是生成xml的业务代码: <? // variables and arrays populated here from db ?>

我有一个生成XML文档的php脚本,但是输出有一个奇怪的问题

在整个文档中,甚至在标记本身中,我似乎都随机获得了无效字符?例如:

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

我不确定这将如何在您的浏览器中呈现,因此如果您看不到它,则无效字符将替换“CDATA”中的“D”

有什么想法吗

编辑:以下是生成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>

]]>
>]]>
]]>
]]>
]]>
]]>
]]>
]]>
>]]>
]]>

在php脚本中,当我们试图生成带有附加字符串的XML时,通常会产生问题。您的输出可能有一些特殊字符和unicode字符。因此,使用核心php提供的库总是一个好主意。就像您可以使用domxml生成XML一样。这也将处理您的特殊字符和格式。 下面是DOM XML的示例代码

<?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();
?>
saveXML();
?>

希望这能解决您的问题

您能提供一个php脚本的示例吗?您在ID上发布了错误,字段ID不在另一位……对不起,我应该解释一下,我们有五个不同的脚本,它们生成的XML输出略有不同,但都与上述类似。无效字符出现在所有五个文件的输出中,看起来就像所描述的那样是随机的。我最初只是给出了“id”行作为一个示例,说明字符实际上是如何在XML标记中出现的,而不仅仅是在它们包含的数据中。人们很难在这方面提供帮助。这是一个大海捞针的问题;如果你知道去哪里找,你可以很容易地找到它,但是你不知道,你也不能把整个干草堆都贴出来让我们帮你。