Почему XML-файл не загружается правильно в приложении PhoneGap? - PullRequest
0 голосов
/ 16 августа 2011

Я занимаюсь разработкой приложения для iPhone на основе PhoneGap, и у меня есть структура папок, как показано ниже.

www/
www/js/
www/css
www/data/

Папка "/ data" содержит файл XML, в котором хранятся факсимильные данные, и структура ...

<?xml version="1.0" encoding="UTF-8"?>
<Faculties>
   <Faculty Name="" Room="" Phone="" Fax="" Email="" Address="">
        <Department Name="">
            <Room>
            </Room>
            <Phone>
            </Phone>
            <Fax>
            </Fax>
            <Email>                                          
            </Email>
            <Address>
            </Address>
        </Department>    
    </Faculty>
    <Faculty Name="" Room="" Phone="" Fax="" Email="" Address="">
        <Department Name="">
            <Room>
            </Room>
            <Phone>
            </Phone>
            <Fax>
            </Fax>
            <Email>                                          
            </Email>
            <Address>
            </Address>
        </Department>    
   </Faculty>
   <Faculty Name="" Room="" Phone="" Fax="" Email="" Address="">
        <Department Name="">
            <Room>
            </Room>
            <Phone>
            </Phone>
            <Fax>
            </Fax>
            <Email>                                          
            </Email>
            <Address>
            </Address>
        </Department>    
    </Faculty>
</Faculties>

Я читаю этот XML, используя jQuery и AJAX. Он может запрашивать, хотя он всегда получает 2 способности вместо 3, так как есть 3, а не 2.

function populateFaculties(target, after) {
    var file = "data/FacultiesAndDepartments.xml";

    $(target).find("option:gt(0)").remove().end();

    $.ajax({
        url: file,
        type: 'GET',
        dataType: 'xml',
        success: function(result) {
            var faculties = $(result).find("Faculties Faculty");

            console.log("There are " + faculties.length + " faculties in the XML.");

            if (faculties.length < 1) {
                $(target).attr("disabled", "disabled");
                after(null);
                return null;
            }

            var done = 0;

            $(faculties).each(function(index, faculty) {
                done++;
                $(target).append('<option value="' + (index + 1) + '">' + $(faculty).attr("Name") + '</option>');
            });

            var timer = setInterval(function() {
                if (faculties.length == done) {
                    timer = window.clearInterval(timer);
                    $(target).removeAttr("disabled");
                    after(faculties);
                }
            }, 500);
        }
    });
}

Передается "target", который является элементом "select", а "after" является функцией делегата.

1 Ответ

0 голосов
/ 16 августа 2011

Я сам понял проблему. Амперсанды в XML зарезервированы и должны быть преобразованы в "& amp;".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...