[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 批处理怎样分解xml文件?

求批处理程序,分解一个xml文件,xml文件如下:
<?xml version="1.0" encoding="gb2312" ?>
<root>
  <a>
    <aa>000085000000</aa>
    <b>
      <c>
        <f>a11220190</f>
        <g>4</g>
      </c>
      <d>431440691.03</d>
      <e></e>
    </b>
  </a>
  <a>
    <aa>000085000000</aa>
    <b>
      <c>
        <f>a11220190</f>
        <g>4</g>
      </c>
      <d>431440691.03</d>
      <e></e>
    </b>
    <b>
      <c>
        <f>a11220190</f>
        <g>4</g>
      </c>
      <d>431440691.03</d>
      <e></e>
    </b>
  </a>
  <a>
    <aa>000085000000</aa>
    <b>
      <c>
        <f>a11220190</f>
        <g>4</g>
      </c>
      <d>431440691.03</d>
      <e></e>
    </b>
    <b>
      <c>
        <f>a11220190</f>
        <g>4</g>
      </c>
      <d>431440691.03</d>
      <e></e>
    </b>
     <b>
      <c>
        <f>a11220190</f>
        <g>4</g>
      </c>
      <d>431440691.03</d>
      <e></e>
    </b>
  </a>
</root>
xml文件大小有100多兆,要求按照标签<a>拆分成N个的xml文件。
以前没有接触过批命令,还请大虾们多帮帮忙了....
在线等

怎么没人呢?

TOP

文件太大处理慢

TOP

看你数据<a>都是单独一行,所以如果<a>左右有其它字符此批处理不适用,包括<a>后有空格的也不行,数据中前面的空格均被清除~
如果不合你的要求,请等其他人解答
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. md temp
  4. set m=1
  5. :p
  6. for /f "%h% tokens=*" %%i in (你要处理的.xml) do (
  7.     set /a "n+=1"
  8.     set /a h=!n!+1
  9.     set "h=skip=!h!"
  10.     if "%%i"=="<a>" set /a m+=1&goto p
  11.     echo.%%i >>temp/!m!.xml
  12. )
  13. exit
复制代码

[ 本帖最后由 cui1988wei 于 2010-10-22 21:00 编辑 ]

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set b=2
  3. for /f "delims=" %%i in (1.xml) do (
  4.         echo %%i >>!b!.xml
  5.         if "%%i" EQU "  </a>" (set/a b=!b!+1)
  6. )
  7.         
  8. pause
复制代码

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. md temp
  4. set m=1
  5. for /f "delims=" %%i in (a.txt) do (
  6.     set /a "n+=1"
  7.     set /a h=!n!+1
  8.     set "h=skip=!h!"
  9.     echo "%%i"|findstr "\<<a>\>" >nul&&set /a m+=1
  10.     echo.%%i >>temp/!m!.txt
  11. )
  12. pause&exit
复制代码

TOP

xml 有特定编码格式,用批处理生成的结果有可能不能解析。

TOP

返回列表