Board logo

标题: [文件操作] 【已解决】求助批处理把单个XML重新梳理内容格式到CSV中 [打印本页]

作者: zhengwei007    时间: 2024-3-20 00:57     标题: 【已解决】求助批处理把单个XML重新梳理内容格式到CSV中

本帖最后由 zhengwei007 于 2024-3-20 11:07 编辑

这个文件a.xml中,有几千行以下内容的代码,我取其中之一,如下:
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <list xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../xsd/augmentation_retailchances.xsd">
  3. <weapon type="warrior">
  4. <stone id="8723">
  5. <variation id="1">
  6. <category probability="100">
  7. <augment id="1" chance="1.1" />
  8. <augment id="2" chance="1.1" />
  9. <augment id="3" chance="1.1" />
  10. <augment id="4" chance="1.1" />
  11. <augment id="5" chance="1.1" />
  12. <augment id="6" chance="1.1" />
  13. <augment id="7" chance="1.1" />
  14. <augment id="8" chance="1.1" />
  15. <augment id="9" chance="1.1" />
  16. <augment id="10" chance="1.1" />
  17. </category>
  18. </variation>
  19. <variation id="2">
  20. <category probability="55">
  21. <augment id="7281" chance="7.69" />
  22. <augment id="7282" chance="7.69" />
  23. <augment id="7283" chance="7.69" />
  24. <augment id="7284" chance="7.69" />
  25. <augment id="7285" chance="7.69" />
  26. <augment id="7286" chance="7.69" />
  27. <augment id="7287" chance="7.69" />
  28. <augment id="7288" chance="7.69" />
  29. <augment id="7289" chance="7.69" />
  30. <augment id="7290" chance="7.69" />
  31. <augment id="7291" chance="7.69" />
  32. <augment id="7292" chance="7.69" />
  33. <augment id="7293" chance="7.72" />
  34. </category>
  35. <category probability="35">
  36. <augment id="8191" chance="5.88" />
  37. <augment id="8192" chance="5.88" />
  38. <augment id="8193" chance="5.88" />
  39. <augment id="8194" chance="5.88" />
  40. <augment id="8195" chance="5.88" />
  41. <augment id="8196" chance="5.88" />
  42. <augment id="8197" chance="5.88" />
  43. <augment id="8198" chance="5.88" />
  44. <augment id="8199" chance="5.88" />
  45. <augment id="8200" chance="5.88" />
  46. <augment id="8201" chance="5.88" />
  47. <augment id="8202" chance="5.88" />
  48. <augment id="8203" chance="5.88" />
  49. <augment id="8204" chance="5.88" />
  50. <augment id="8205" chance="5.88" />
  51. <augment id="8206" chance="5.88" />
  52. <augment id="8207" chance="5.92" />
  53. </category>
  54. <category probability="7">
  55. <augment id="14578" chance="0.93" />
  56. <augment id="14579" chance="0.93" />
  57. <augment id="14580" chance="0.93" />
  58. <augment id="14581" chance="0.93" />
  59. <augment id="14582" chance="0.93" />
  60. <augment id="14583" chance="0.93" />
  61. <augment id="14584" chance="0.93" />
  62. <augment id="14585" chance="0.93" />
  63. <augment id="14586" chance="0.93" />
  64. <augment id="14587" chance="0.93" />
  65. <augment id="14588" chance="0.93" />
  66. </category>
  67. <category probability="3">
  68. <augment id="14685" chance="1.85" />
  69. <augment id="14686" chance="1.85" />
  70. <augment id="14687" chance="1.85" />
  71. <augment id="14688" chance="1.85" />
  72. <augment id="14689" chance="1.85" />
  73. <augment id="14690" chance="1.85" />
  74. <augment id="14691" chance="1.85" />
  75. <augment id="14692" chance="1.85" />
  76. <augment id="14693" chance="1.85" />
  77. <augment id="14694" chance="1.85" />
  78. <augment id="14695" chance="1.85" />
  79. </category>
  80. </variation>
  81. </stone>
复制代码
我希望通过批处理能整理成以下内容,标题我自己写,直接输出到sour.csv中即可
  1. stone id variation id category probability augment id
  2. 8723 1 100 1
  3. 8723 1 100 2
  4. 8723 1 100 3
  5. 8723 1 100 4
  6. 8723 1 100 5
  7. 8723 1 100 6
  8. 8723 1 100 7
  9. 8723 1 100 8
  10. 8723 1 100 9
  11. 8723 1 100 10
  12. 8723 2 55 7281
  13. 8723 2 55 7282
  14. 8723 2 55 7283
  15. 8723 2 55 7284
  16. 8723 2 55 7285
  17. 8723 2 55 7286
  18. 8723 2 55 7287
  19. 8723 2 55 7288
  20. 8723 2 55 7289
  21. 8723 2 55 7290
  22. 8723 2 55 7291
  23. 8723 2 55 7292
  24. 8723 2 55 7293
  25. 8723 2 35 8191
  26. 8723 2 35 8192
  27. 8723 2 35 8193
  28. 8723 2 35 8194
  29. 8723 2 35 8195
  30. 8723 2 35 8196
  31. 8723 2 35 8197
  32. 8723 2 35 8198
  33. 8723 2 35 8199
  34. 8723 2 35 8200
  35. 8723 2 35 8201
  36. 8723 2 35 8202
  37. 8723 2 35 8203
  38. 8723 2 35 8204
  39. 8723 2 35 8205
  40. 8723 2 35 8206
  41. 8723 2 35 8207
  42. 8723 2 7 14578
  43. 8723 2 7 14579
  44. 8723 2 7 14580
  45. 8723 2 7 14581
  46. 8723 2 7 14582
  47. 8723 2 7 14583
  48. 8723 2 7 14584
  49. 8723 2 7 14585
  50. 8723 2 7 14586
  51. 8723 2 7 14587
  52. 8723 2 7 14588
  53. 8723 2 3 14685
  54. 8723 2 3 14686
  55. 8723 2 3 14687
  56. 8723 2 3 14688
  57. 8723 2 3 14689
  58. 8723 2 3 14690
  59. 8723 2 3 14691
  60. 8723 2 3 14692
  61. 8723 2 3 14693
  62. 8723 2 3 14694
  63. 8723 2 3 14695
复制代码

作者: wanghan519    时间: 2024-3-20 05:36

第三方xmlstarlet,在bat大概是
  1. xml sel -t -m "//augment" -v "ancestor::stone/@id" -o " " -v "ancestor::variation/@id" -o " " -v "../@probability" -o " " -v "./@id" -n a.xml
复制代码
第三方awk在busybox里大概是
  1. awk -v RS='<|>' -F '"' '/^stone /{s=$2;next}/^variation /{v=$2;next}/^category /{c=$2;next}/^augment /{print s,v,c,$2}' a.xml
复制代码

作者: qixiaobin0715    时间: 2024-3-20 08:55

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=1,3 delims=<>= " %%i in (a.xml) do (
  4.     if "%%i"=="stone" (
  5.         set s1=%%~j
  6.     ) else if /i "%%i"=="variation" (
  7.         set s2=%%~j
  8.     ) else if /i "%%i"=="category" (
  9.         set s3=%%~j
  10.     ) else if /i "%%i"=="augment" (
  11.         echo,!s1! !s2! !s3! %%~j
  12.     )
  13. )
  14. pause
复制代码

作者: zhengwei007    时间: 2024-3-20 11:07

谢谢楼上两位大佬, 已搞定。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2