Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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
Javascript js从JSP解析XML,存储值_Javascript_Jquery_Xml_Arrays - Fatal编程技术网

Javascript js从JSP解析XML,存储值

Javascript js从JSP解析XML,存储值,javascript,jquery,xml,arrays,Javascript,Jquery,Xml,Arrays,我正在解析XML,并希望以易于阅读的方式存储这些值 我得到了地图形状和地图点(x和y坐标)。(x,y)对形成一个点,点的集合形成一个形状 下面是我想解析的一些XML示例: <?xml version='1.0'?> <mapQuery id='10918014'> <mapShape id='429436'> <mapPoint id='4259799'> <x>-81.61508<

我正在解析XML,并希望以易于阅读的方式存储这些值

我得到了地图形状和地图点(x和y坐标)。(x,y)对形成一个点,点的集合形成一个形状

下面是我想解析的一些XML示例:

<?xml version='1.0'?>
<mapQuery id='10918014'>
    <mapShape id='429436'>
        <mapPoint id='4259799'>
            <x>-81.61508</x>
            <y>41.52184</y>
        </mapPoint>
        <mapPoint id='4259800'>
            <x>-81.61537</x>
            <y>41.52181</y>
        </mapPoint>
        <mapPoint id='4259801'>
            <x>-81.61538</x>
            <y>41.522198</y>
        </mapPoint>
        <mapPoint id='4259802'>
            <x>-81.61516</x>
            <y>41.52222</y>
        </mapPoint>
        <mapPoint id='4259803'>
            <x>-81.61508</x>
            <y>41.52184</y>
        </mapPoint>
    </mapShape>
</mapQuery>
(此示例XML仅显示一个形状,但可能有多个形状。)

提前感谢您的帮助,提出了一个简单的问题=)

以下是一些基本代码:

shapeXmlHandler : function(xml){

    $(xml).find("mapShape").each(function(){
        $(this).find("mapPoint").each(function() {
            console.log('mapPoint: '+$(this).attr('id'));
            console.log('x :'+$(this).find("x").text());
            console.log('y :'+$(this).find("y").text());
        });
    });
}
尝试使用

这个日志应该是这样的

[
    [
        {x: -81.61508, y: 41.52184},
        {x: -81.61537, y: 41.52181},
        ...
    ]
]

这可以通过使用而不是
。each()



如果有机会使用JSON而不是XML,您根本不需要任何自定义解析代码!使用即可。

您有什么问题?到目前为止看起来不错(除了我认为您实际上想要
形状[0]。点[0]。x=第一个x点
等)打得不错。我真的不确定如何实现这个目标,但我已经很接近了。我真的不知道在解析xml数据时将其放入数组的最佳方法是什么,所以我想征求一些建议。非常感谢您的全面回答。如果可以的话,我会给你两张赞成票谢谢,不用担心。您最终使用了哪种方法?对于.map(),是否需要.get()?除非关闭.get(),否则我不会得到任何控制台输出,但它显示的内容远不止数组(像所有类型的jQuery方法)。我可能正在使用第一种方法——它仍然不确定我是否需要将输入保持太长时间,所以我可能在处理时传递它,这取决于您希望对输出做什么。在大多数情况下,您需要使用
.get()
,因此您使用的是一个简单的普通JavaScript数组,而不是jQuery对象。
.map()
之后的
.get()
调用是惯用的jQuery。也就是说,像这样嵌套的
.map()
调用可能会忽略内部的
.get()
调用。我还没有玩弄它来为自己找到答案。
shapeXmlHandler : function(xml)
{
    var shapes = [];

    $(xml).find('mapShape').each(function()
    {
        var shape = [];

        $(this).find('mapPoint').each(function()
        {
            var $p = $(this),
                point = 
                {
                    x: $p.find('x').text(),
                    y: $p.find('y').text()
                };

            shape.push(point);
        });

        shapes.push(shape);
    });

    console.log(shapes);
}
[
    [
        {x: -81.61508, y: 41.52184},
        {x: -81.61537, y: 41.52181},
        ...
    ]
]
shapeXmlHandler : function(xml)
{
    var shapes = $(xml).find('mapShape').map(function()
    {
        return $(this).find('mapPoint').map(function()
        {
            var $p = $(this);
            return {
                x: $p.find('x').text(),
                y: $p.find('y').text()
            };
        }).get();
    }).get();

    console.log(shapes);
}