将复杂的nexted xml加载到配置单元表

tzdcorbm  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(487)

是否可以将下面所示的复杂嵌套xml添加到配置单元表中。

  1. <items>
  2. <item id="0001" type="donut">
  3. <name>Cake</name>
  4. <ppu>0.55</ppu>
  5. <batters>
  6. <batter id="1001">Regular</batter>
  7. <batter id="1002">Chocolate</batter>
  8. <batter id="1003">Blueberry</batter>
  9. <batter id="1003">Devil's Food</batter>
  10. </batters>
  11. <topping id="5001">None</topping>
  12. <topping id="5002">Glazed</topping>
  13. <topping id="5005">Sugar</topping>
  14. <topping id="5007">Powdered Sugar</topping>
  15. <topping id="5006">Chocolate with Sprinkles</topping>
  16. <topping id="5003">Chocolate</topping>
  17. <topping id="5004">Maple</topping>
  18. </item>
  19. <item id="0002" type="donut">
  20. <name>Raised</name>
  21. <ppu>0.55</ppu>
  22. <batters>
  23. <batter id="1001">Regular</batter>
  24. </batters>
  25. <topping id="5001">None</topping>
  26. <topping id="5002">Glazed</topping>
  27. <topping id="5005">Sugar</topping>
  28. <topping id="5003">Chocolate</topping>
  29. <topping id="5004">Maple</topping>
  30. </item>
  31. <item id="0003" type="donut">
  32. <name>Buttermilk</name>
  33. <ppu>0.55</ppu>
  34. <batters>
  35. <batter id="1001">Regular</batter>
  36. <batter id="1002">Chocolate</batter>
  37. </batters>
  38. </item>
  39. <item id="0004" type="bar">
  40. <name>Bar</name>
  41. <ppu>0.75</ppu>
  42. <batters>
  43. <batter id="1001">Regular</batter>
  44. </batters>
  45. <topping id="5003">Chocolate</topping>
  46. <topping id="5004">Maple</topping>
  47. <fillings>
  48. <filling id="7001">
  49. <name>None</name>
  50. <addcost>0</addcost>
  51. </filling>
  52. <filling id="7002">
  53. <name>Custard</name>
  54. <addcost>0.25</addcost>
  55. </filling>
  56. <filling id="7003">
  57. <name>Whipped Cream</name>
  58. <addcost>0.25</addcost>
  59. </filling>
  60. </fillings>
  61. </item>
  62. <item id="0005" type="twist">
  63. <name>Twist</name>
  64. <ppu>0.65</ppu>
  65. <batters>
  66. <batter id="1001">Regular</batter>
  67. </batters>
  68. <topping id="5002">Glazed</topping>
  69. <topping id="5005">Sugar</topping>
  70. </item>
  71. <item id="0006" type="filled">
  72. <name>Filled</name>
  73. <ppu>0.75</ppu>
  74. <batters>
  75. <batter id="1001">Regular</batter>
  76. </batters>
  77. <topping id="5002">Glazed</topping>
  78. <topping id="5007">Powdered Sugar</topping>
  79. <topping id="5003">Chocolate</topping>
  80. <topping id="5004">Maple</topping>
  81. <fillings>
  82. <filling id="7002">
  83. <name>Custard</name>
  84. <addcost>0</addcost>
  85. </filling>
  86. <filling id="7003">
  87. <name>Whipped Cream</name>
  88. <addcost>0</addcost>
  89. </filling>
  90. <filling id="7004">
  91. <name>Strawberry Jelly</name>
  92. <addcost>0</addcost>
  93. </filling>
  94. <filling id="7005">
  95. <name>Rasberry Jelly</name>
  96. <addcost>0</addcost>
  97. </filling>
  98. </fillings>
  99. </item>
  100. </items>

我已经能够Map到1001,1002,1003,但相同的值,我无法提取。我将xml加载到配置单元表中,并使用xpath进行提取。我需要一些普通的巧克力蓝莓。
我将以下内容添加到配置单元表(store.choclate)中并作为查询
从store.chocolate中选择xpath(str,“/items/item/batters/batter/@id”)
这将给出值1001、1002、1003。如何编写一个查询来提取普通巧克力和蓝莓?

vsnjm48y

vsnjm48y1#

在查询中,将xml数据作为单个表加载,并在其上创建视图。该查询的结构如下:

  1. select xpath(str, '/items/item/batters/batter[@id="1001"]/text()')

它将提取“regular”的值。在类似的情况下,它也可以用于其他领域

相关问题