首先扫盲:
    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript的一个子集;
    XML(Extensible Markup Language)即可扩展标记语言,Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。
    两者的共同优点是都是文本表示的数据格式,可以跨平台、跨系统交换数据。
    要是还没有看懂这段文字,我们就直接来看代码。
    下面是一段简单的Json代码:

    1. {
    2. "name": "中国",
    3. "province": [{
    4. "name": "黑龙江",
    5. "cities": {
    6. "city": ["哈尔滨", "大庆"]
    7. }
    8. }, {
    9. "name": "广东",
    10. "cities": {
    11. "city": ["广州", "深圳", "珠海"]
    12. }
    13. }, {
    14. "name": "台湾",
    15. "cities": {
    16. "city": ["台北", "高雄"]
    17. }
    18. }, {
    19. "name": "新疆",
    20. "cities": {
    21. "city": ["乌鲁木齐"]
    22. }
    23. }]
    24. }


    从代码的角度很明显它是”国家——省份——城市“的表,我们要怎么获取它的数据呢?
    下面我们就用Power Query去获取它,依旧是选中——”从表“进行操作。
    23、Power Query-XML与JSON数据获取 - 图1

    这个时候我们需要用到的菜单是”转换“——”分析“。
    发现它底下就有两个选项:
    1、XML
    2、JSON
    这次我们选择”Json”。
    23、Power Query-XML与JSON数据获取 - 图2

    接着我们依次按照”国家——省份——城市“进行展开。
    23、Power Query-XML与JSON数据获取 - 图3

    这样我们就获取成功了,我们可以发现,这个JSON代码的结构是相当有规律的,有兴趣的胖友可以去了解学习一下。
    说完Json,我们接着聊一下XML代码,这个我们见的就比较多了,我们的Excel的文件就是这样构成的。
    比如我们把刚刚做的这个excel改一个扩展名为”rar“,进行解压操作。
    23、Power Query-XML与JSON数据获取 - 图4

    23、Power Query-XML与JSON数据获取 - 图5

    我们可以发现,其实每一层,都是由XML文件组成的。
    下面我们给出这样一段XML代码。

    1. <!-- Edited by XMLSpy?? -->
    2. <breakfast_menu>
    3. <style type="text/css"/>
    4. <food>
    5. <name>Belgian Waffles</name>
    6. <price>$5.95</price>
    7. <description>
    8. Two of our famous Belgian Waffles with plenty of real maple syrup
    9. </description>
    10. <calories>650</calories>
    11. </food>
    12. <food>
    13. <name>Strawberry Belgian Waffles</name>
    14. <price>$7.95</price>
    15. <description>
    16. Light Belgian waffles covered with strawberries and whipped cream
    17. </description>
    18. <calories>900</calories>
    19. </food>
    20. <food>
    21. <name>Berry-Berry Belgian Waffles</name>
    22. <price>$8.95</price>
    23. <description>
    24. Light Belgian waffles covered with an assortment of fresh berries and whipped cream
    25. </description>
    26. <calories>900</calories>
    27. </food>
    28. <food>
    29. <name>French Toast</name>
    30. <price>$4.50</price>
    31. <description>
    32. Thick slices made from our homemade sourdough bread
    33. </description>
    34. <calories>600</calories>
    35. </food>
    36. <food>
    37. <name>Homestyle Breakfast</name>
    38. <price>$6.95</price>
    39. <description>
    40. Two eggs, bacon or sausage, toast, and our ever-popular hash browns
    41. </description>
    42. <calories>950</calories>
    43. </food>
    44. </breakfast_menu>


    下面我们同样直接拉到PQ里面整一下。
    23、Power Query-XML与JSON数据获取 - 图6

    23、Power Query-XML与JSON数据获取 - 图7

    分析发现其实我们只要扩展”food“这个表,直接点击”Table“。
    23、Power Query-XML与JSON数据获取 - 图8

    下面我们还是通过一个实例来巩固。
    从外部XML文件获取数据,进行处理。
    ”要求:从demo.xml文件中统计上世纪年各年代、国家歌手的数量?“
    这个时候我们是通过一个新的方法进行打开:Power Query——从文件——从XML。
    23、Power Query-XML与JSON数据获取 - 图9

    23、Power Query-XML与JSON数据获取 - 图10

    选择”CD”表点编辑进入处理。(下面的style是样式表,我们不需要关注。)
    23、Power Query-XML与JSON数据获取 - 图11

    很高级,直接全部获取了。
    下面我们直接处理我们的需求,根据国家以及年代汇总歌手的数量。
    我们最辣手的是处理一下年代,其实很简单,从“YEAR”左边第2个位置开始取一位即可,加上后缀“0年代”。
    23、Power Query-XML与JSON数据获取 - 图12

    23、Power Query-XML与JSON数据获取 - 图13

    效果如下:
    23、Power Query-XML与JSON数据获取 - 图14

    最后进行“分组依据”,根据”国家“——”年代“进行计数,对”年代“进行”透视列“操作。
    23、Power Query-XML与JSON数据获取 - 图15

    23、Power Query-XML与JSON数据获取 - 图16

    得到最终结果:
    23、Power Query-XML与JSON数据获取 - 图17