Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
Jquery $.parseXML无法分析包含脚本标记的XML_Jquery_Xml_Jbpm_Bpmn - Fatal编程技术网

Jquery $.parseXML无法分析包含脚本标记的XML

Jquery $.parseXML无法分析包含脚本标记的XML,jquery,xml,jbpm,bpmn,Jquery,Xml,Jbpm,Bpmn,我正在尝试使用$解析以下BPMN 2 XML。parseXML: <?xml version="1.0" encoding="UTF-8"?> <definitions id="Definition" xmlns:tns="http://www.jboss.org/drools"> <process processType="Private" isExecutable="true" id="com.sam

我正在尝试使用
$解析以下BPMN 2 XML。parseXML

<?xml version="1.0" encoding="UTF-8"?>
<definitions id="Definition"
         xmlns:tns="http://www.jboss.org/drools">
    <process processType="Private"
         isExecutable="true"
         id="com.sample.bpmn"
         name="Sample Process"
         tns:packageName="defaultPackage" >
        <scriptTask id="_2" name="Sample Script" scriptFormat="http://www.java.com/java">
            <script>person.id</script>
        </scriptTask>
    </process>
</definitions>
干得好。奇怪的是,jquery当然会使用这个实现(不适用于IE)

关于debug$函数

parseXML: function( data ) {
    var xml, tmp;
    if ( !data || typeof data !== "string" ) {
        return null;
    }
    try {
        if ( window.DOMParser ) { // Standard
            tmp = new DOMParser();
            xml = tmp.parseFromString( data , "text/xml" );
        } else { // IE
            xml = new ActiveXObject( "Microsoft.XMLDOM" );
            xml.async = "false";
            xml.loadXML( data );
        }
    } catch( e ) {
        xml = undefined;
    }
    if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
        jQuery.error( "Invalid XML: " + data );
    }
    return xml;
},
xml.getElementsByTagName(“parsererror”)中的问题

“此页面包含以下错误:第6列第2行错误: 仅在以下文档开头允许的XML声明是 在出现第一个错误之前呈现页面。“

如果删除xml声明,就会得到

“此页包含以下错误:第10行第列的错误 29:文档末尾的额外内容


您想做什么?$.parseXML使用DOMParser()将XML从字符串解析为DOM树。但是您已经有了DOM目标是什么?稍后我必须找到XML的特定子树,例如:$XML.find('process')).问题已编辑。为什么不使用jQuery选择器获取数据?我确实使用jQuery选择器从$xml获取数据,我不确定您的意思,请您编辑小提琴好吗?为了让事情更清楚,我的问题是,
$。parseXML
无法解析上述xml。我知道上面的代码有替代方法,但parserXML应该是p我在Chrome 33.0.1750.149和FF 27.0.1中测试了这个,但不起作用。你是在哪个浏览器中测试的?在你的例子中,XML是否打印在console.log(XML)中与解析的XML相同?在我的情况下不是。close标记上的错误您可以使用不同的东西吗?使用不同的东西是什么意思,这是BPMN 2规范定义的有效XML。
$。应该解析它的parseXML
。请再次阅读原始问题。我已阅读。问题在这里var scriptBody=$('script#scriptBody').html();或var container=document.getElemenetByid('scriptBody');-将内容打印到控制台,您将看到,字符串不等于标记内容
xmlDoc   = $.parseXML(data),
$xml     = $(xmlDoc),
$def     = $xml.find('definitions'),
$process = $def.find('process'),
 var scriptBody = $('script#scriptBody').text();
 console.log(scriptBody);

 var parser = new DOMParser(); var xml =
 parser.parseFromString(scriptBody, 'text/xml'); console.log(xml);
parseXML: function( data ) {
    var xml, tmp;
    if ( !data || typeof data !== "string" ) {
        return null;
    }
    try {
        if ( window.DOMParser ) { // Standard
            tmp = new DOMParser();
            xml = tmp.parseFromString( data , "text/xml" );
        } else { // IE
            xml = new ActiveXObject( "Microsoft.XMLDOM" );
            xml.async = "false";
            xml.loadXML( data );
        }
    } catch( e ) {
        xml = undefined;
    }
    if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
        jQuery.error( "Invalid XML: " + data );
    }
    return xml;
},