javascript - 这个数据结构怎么转换一下?
ringa_lee
ringa_lee 2017-04-11 11:20:23
[JavaScript讨论组]

原本是一个xml文件:location.xml

<Location>
  <CountryRegion Name="中国" Code="1">
    <State Name="北京" Code="11">
      <City Name="东城" Code="1" />
      <City Name="西城" Code="2" />
      <City Name="朝阳" Code="5" />
      <City Name="丰台" Code="6" />
      <City Name="石景山" Code="7" />
      <City Name="海淀" Code="8" />
      <City Name="门头沟" Code="9" />
      <City Name="房山" Code="11" />
      <City Name="通州" Code="12" />
      <City Name="顺义" Code="13" />
      <City Name="昌平" Code="21" />
      <City Name="大兴" Code="24" />
      <City Name="平谷" Code="26" />
      <City Name="怀柔" Code="27" />
      <City Name="密云" Code="28" />
      <City Name="延庆" Code="29" />
    </State>
    <State Name="天津" Code="12">
      <City Name="和平" Code="1" />
      <City Name="河东" Code="2" />
      <City Name="河西" Code="3" />
      <City Name="南开" Code="4" />
      <City Name="河北" Code="5" />
      <City Name="红桥" Code="6" />
      <City Name="滨海新区" Code="26" />
      <City Name="东丽" Code="10" />
      <City Name="西青" Code="11" />
      <City Name="津南" Code="12" />
      <City Name="北辰" Code="13" />
      <City Name="宁河" Code="21" />
      <City Name="武清" Code="22" />
      <City Name="静海" Code="23" />
      <City Name="宝坻" Code="24" />
      <City Name="蓟县" Code="25" />
    </State>
    
  <CountryRegion>
<Location>

我想转换成这样:location.js

        location: {
            '北京': ['东城', '西城', '朝阳', '丰台', '石景山', '海淀', '门头沟', '房山', '通州', '顺义', '昌平', '大兴', '怀柔', '平谷', '密云', '延庆'],
            '天津': ['河东', '河西', '南开', '河北', '红桥', '东丽', '西青', '津南', '北辰', '武清', '宝坻', '滨海', '宁河', '静海', '蓟县']
        }

用什么方式比较好?用爬虫还是其他什么方式?

ringa_lee
ringa_lee

ringa_lee

全部回复(5)
怪我咯

本地有PHP环境的话可以用这个转换

<?php

$source = <<<XML
<Location>
  <CountryRegion Name="中国" Code="1">
    <State Name="北京" Code="11">
      <City Name="东城" Code="1" />
      <City Name="西城" Code="2" />
      <City Name="朝阳" Code="5" />
      <City Name="丰台" Code="6" />
      <City Name="石景山" Code="7" />
      <City Name="海淀" Code="8" />
      <City Name="门头沟" Code="9" />
      <City Name="房山" Code="11" />
      <City Name="通州" Code="12" />
      <City Name="顺义" Code="13" />
      <City Name="昌平" Code="21" />
      <City Name="大兴" Code="24" />
      <City Name="平谷" Code="26" />
      <City Name="怀柔" Code="27" />
      <City Name="密云" Code="28" />
      <City Name="延庆" Code="29" />
    </State>
    <State Name="天津" Code="12">
      <City Name="和平" Code="1" />
      <City Name="河东" Code="2" />
      <City Name="河西" Code="3" />
      <City Name="南开" Code="4" />
      <City Name="河北" Code="5" />
      <City Name="红桥" Code="6" />
      <City Name="滨海新区" Code="26" />
      <City Name="东丽" Code="10" />
      <City Name="西青" Code="11" />
      <City Name="津南" Code="12" />
      <City Name="北辰" Code="13" />
      <City Name="宁河" Code="21" />
      <City Name="武清" Code="22" />
      <City Name="静海" Code="23" />
      <City Name="宝坻" Code="24" />
      <City Name="蓟县" Code="25" />
    </State>

  </CountryRegion>
</Location>
XML;

$result = [
    'location' => [],
];

$xml = simplexml_load_string($source);
foreach ($xml->CountryRegion->State as $state) {
    $province = '';
    foreach ($state->attributes() as $key => $att) {
        if ($key == 'Name') {
            $province = (string) $att;
        }
    }

    $result['location'][$province] = [];
    foreach ($state->City as $city) {
        foreach ($city->attributes() as $key => $attr) {
            if ($key == 'Name') {
                $result['location'][$province][] = (string) $attr;
            }
        }
    }
}

echo (json_encode($result, JSON_UNESCAPED_UNICODE));

保存为test.php,然后执行php test.php即可。输出如下

{"location":{"北京":["东城","西城","朝阳","丰台","石景山","海淀","门头沟","房山","通州","顺义","昌平","大兴","平谷","怀柔","密云","延庆"],"天津":["和平","河东","河西","南开","河北","红桥","滨海新区","东丽","西青","津南","北辰","宁河","武清","静海","宝坻","蓟县"]}}
伊谢尔伦

谁给你的数据,让服务端直接给你转成json格式的最好。很少有人用js来保存数据,最多也就是个配置文件。

迷茫

你可以找一个解析xml的库,然后把里面的数据提取出来,转换成你想要的格式!如果你的js是跑在浏览器上的,那就更简单了,DOM有提供现成的api来可以解析xml

伊谢尔伦

https://developer.mozilla.org...

阿神

xml格式的数据 前端也可以访问吧
数据都是后台给的
如果真想转json
让后台的转一下
大家都方便

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号