调用XML的jQuery $ .parseXML无效,但它传递了XML验证器

时间:2015-11-04 15:39:30

标签: jquery xml

我正在尝试使用jQuery加载xml文件。使用验证器网站测试时,该文件被报告为有效。但是,当我在文件上尝试$ .parseXML时,我收到以下错误:

Uncaught Error: Invalid XML: questions.xml

以下是我使用的代码:

var xml = $.parseXML('questions.xml');

这是questions.xml中的XML:

<?xml version="1.0" encoding="UTF-8"?>
    <questionnaire defaultLanguage="english" xmlns="http://localhost/questionnaire" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost/questionnaire
                        questions.xsd">
        <question id="index" type="other">
            <content>
                <default>Hi</default>
                <language type="spanish">Hello</language>
                <language type="russian">Hi</language>
            </content>
        </question>
        <question id="c01-q01" qId="Q0301" type="compliance">
            <content>
                <default>Hi</default>
                <language type="spanish">Hello</language>
                <language type="russian">Again</language>
            </content>
            <answer id="1" color="green">
                <default>Yes</default>
                <language type="spanish">sí</language>
                <language type="russian">Да</language>
            </answer>
            <answer id="2" color="red">
                <default>No</default>
                <language type="spanish">no</language>
                <language type="russian">Нет</language>
            </answer>
        </question>
        <question id="c01-q02" qId="Q0302" type="compliance">
            <content>
                <default>Hiyo</default>
                <language type="spanish">What?</language>
                <language type="russian">Yolo</language>
            </content>
            <answer id="1" color="red">
                <default>Please</default>
                <language type="spanish">Fix</language>
                <language type="russian">Me</language>
            </answer>
            <answer id="2" color="red">
                <default>I'm</default>
                <language type="spanish">Scared</language>
                <language type="russian">Of</language>
            </answer>
            <answer id="3" color="yellow">
                <default>Dark</default>
                <language type="spanish">Yolo</language>
                <language type="russian">Mole</language>
            </answer>
            <answer id="4" color="yellow">
                <default>Is</default>
                <language type="spanish">Helping</language>
                <language type="russian">Organization</language>
            </answer>
        </question>
    </questionnaire>

1 个答案:

答案 0 :(得分:2)

您传递给parseXML的值必须是 XML字符串。您传递的是文件名字符串(或可能是相对URI)。

您需要将其更改为更像:

var xml = $.parseXML('<foo><bar /><baz attribute="value" /></foo>');

或者,您可以使用$.ajax从URI加载XML。

$.ajax("questions.xml", { success: processXML });
function processXML(xml) {
    console.log(xml);
}