0

我已经尝试了几种方法让我的 xml 脚本在 java 中解析,但我想不通!

我有 2 个文件。如果调用 mysql_get.php,它会返回一个 XML 脚本。post_alert.html 通过 jQuery $.post(..) 从 mysql_get.php 获取 XML 脚本,如下所示:

function init2() {

    var response;
    $.post("mysql_get.php", function (data) {
        response = data;
        alert(response)
    });
    var xml;
    xml = $.parseXML(response);
    alert($(response).find("item").each(function () {
        $(this).attr("id")
    }));
}

在点击一个调用 init2() 的按钮后,我得到了 xml 样式的响应消息,正如我在警报弹出窗口中看到的那样。

<?xml version="1.0" encoding="uft-8"?>
<root>
<collection collection="locationPoint">
    <item id="1">
        <latitude>23.4442</latitude>
        <longitude>51.2341</longitude>
    </item>

    <item id="2">
        <latitude>2849.24</latitude>
        <longitude>213.132</longitude>
    </item>
</collection>

但是除了我希望正确解析之外,警报不会弹出“1”。

我究竟做错了什么?

4

3 回答 3

1

这里有几件事: 你的 xml 文件的第 1 行应该是 UTF-8 而不是 UFT-8 第 2 行应该被删除,否则请确保你有一个结束标签,无效的 xml

然后是一个小例子,希望对您有所帮助:

<html>
    <head>
        <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
    </head>
    <body>
        <div id="dc"></div>
    </body>
    <script type="text/javascript">
        $(document).ready(function() {
            $.ajax({
                url: 'mysql_get.php',
                type: 'post',
                dataType: 'xml',
                success: function(data) {
                    $(data).find('item').each(function () {
                        $('#dc').append($(this).attr('id') + '<br/>')
                    });
                },
                error: function(data) {
                    $('#dc').html('error');
                }
            });
        });
    </script>
</html>
于 2012-04-03T23:47:35.820 回答
1

AJAX中的 A代表异步。无论响应状态如何,调用之后的代码$.post(..)都会立即执行。$.post

您必须调用中移动var xml..-code 。 此外,仅循环遍历元素,而不返回 ID。用于创建由 id 组成的对象,并获取它的数组表示。$.post
.each().map().toArray()

function init2() {
    $.post("mysql_get.php", function(data) {
        var response = data;
        var xml = $($.parseXML(response));
        alert(response.find("item").map(function () {
            return $(this).attr("id")
        }).toArray() );
    });
}
于 2012-04-03T22:57:17.220 回答
0

看看使用 jQuery 进行 XML 操作

于 2012-04-04T00:20:42.497 回答