找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 24290|回复: 3

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

[复制链接]
发表于 2024-3-20 00:57:41 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-3-20 05:36:27 | 显示全部楼层
第三方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
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2024-3-20 08:55:09 | 显示全部楼层
  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
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2024-3-20 11:07:38 | 显示全部楼层
谢谢楼上两位大佬, 已搞定。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 04:52 , Processed in 0.019151 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表