XML解析错误

时间:2014-09-02 08:42:53

标签: php jquery xml

我有这个jquery code,它接受​​一个xml变量解析它并将其显示在一个html文件中,它按预期工作。 问题是,一旦我尝试从php脚本中获取xml变量并将此varibale作为上述jquery脚本的输入,我会在Web浏览器中收到错误消息。

我的剧本:

<?php
require('MyClass.php');
$Myparam = "0123641";
$built_request=new MyClass($Myparam);
$xml=$built_request->getResponse();// works fine and returns an xml variable represented as below
?>
<html lang="en">
<head>
<meta charset="utf-8"></meta>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<BODY>
<p id="someElement"></p>
<script>
$(document).ready(function(){
var xml ="<?php echo $xml; ?>";
var d1 = $(xml).find('data[name="name2"]').attr('status');
$( "#someElement" ).append( d1 );
});
</script>
</BODY>
</html>

这是Web浏览器中获得的错误,尽管我在javascript中直接提供了相同的xml变量,但脚本可以正常工作。

    XML Parse Error: XML or text declaration not at start of entity
    var xml ="<?xml version="1.0" encoding="UTF-8"?>
--------------^

试图调查此问题我打印了我获得的变量,打印值如下:

   <?xml version="1.0" encoding="UTF-8"?>
    <data request-id="31236">
    <data name="name1" code="0" code2="003404502" code3="">
      <data name="name2" code1="34297502" time="2014-09-01" id="14c259b-bsdfgds8b5" leitcode="" code2="692748" order="false" piece-code="00363932" piece-status="0" identifier-type="2" pan-recipient-name="" street-name="" house-number="" city-name="" status="status x" error-status="0" code_name="code name" />
      </data>
    </data>

3 个答案:

答案 0 :(得分:0)

您的内联JavaScript正在呈现为类似于:

的表单
$(document).ready(function() {

    var xml ="<?xml version="1.0" encoding="UTF-8"?>
                 <data request-id="ID">
                 ... ";

    var d1 = $(xml).find('data[name="name2"]').attr('status');
    $( "#someElement" ).append( d1 );

});

注意xml行:它在字符串本身内多次输出双引号。以下内容应解决此问题:

var xml = "<?= str_replace('"', '\"', $xml); ?>";

答案 1 :(得分:0)

我认为你应该改变代码:

var xml ="<?php echo $xml; ?>";

var xml ='<?php echo $xml; ?>';

<强> 编辑:

我做了一个简单的测试:

<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script>
     var xml = '<?xml version="1.0" encoding="UTF-8"?> <data request-id="31236"><data       name="name1" code="0" code2="003404502" code3=""> <data name="name2" code1="34297502" time="2014-09-01" id="14c259b-bsdfgds8b5" leitcode="" code2="692748" order="false" piece-code="00363932" piece-status="0" identifier-type="2" pan-recipient-name="" street-name="" house-number="" city-name="" status="status x" error-status="0" code_name="code name" /></data></data>'
     var d1 = $(xml).find('data[name="name2"]').attr('status');
     console.log(d1);
</script>

它的工作正常

输出:

   status x

答案 2 :(得分:0)

var xml ='<?php echo $xml; ?>';

请使用上面的代码来获得正确的结果。由于你在xml文档中有双引号,如果在javacsript中获取值时放置双引号,它就不起作用。