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

[文本处理] [分享]BAT调用PowerShell把单行XML格式美化为多行

[复制链接]
发表于 2023-11-11 21:36:30 | 显示全部楼层 |阅读模式
假设有一个UTF-8编码的单行XML文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?><Document xmlns="urn:iso:std:iso:20022:tech:xsd:sese.024.001.01"><SctiesSttlmTxStsAdvc><Id><Id>22052046</Id><CreDtTm><Dt>2023-11-10</Dt></CreDtTm></Id><TxId><AcctOwnrTxId>231110-001-428738</AcctOwnrTxId><CmonId>22052127</CmonId></TxId><MtchgSts><Umtchd><Rsn><Cd><Cd>CMIS</Cd></Cd></Rsn></Umtchd></MtchgSts></SctiesSttlmTxStsAdvc></Document>

需要把它的格式美化为多行,例如:

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:sese.024.001.01">
    <SctiesSttlmTxStsAdvc>
        <Id>
            <Id>22052046</Id>
            <CreDtTm>
                <Dt>2023-11-10</Dt>
            </CreDtTm>
        </Id>
        <TxId>
            <AcctOwnrTxId>231110-001-428738</AcctOwnrTxId>
            <CmonId>22052127</CmonId>
        </TxId>
        <MtchgSts>
            <Umtchd>
                <Rsn>
                    <Cd>
                        <Cd>CMIS</Cd>
                    </Cd>
                </Rsn>
            </Umtchd>
        </MtchgSts>
    </SctiesSttlmTxStsAdvc>
</Document>

脚本 BeautyXML.bat 完整代码:
  1. @echo off
  2. set "FileOld=1.xml"
  3. set "FileNew=2.xml"
  4. cd /d "%~dp0"
  5. powershell "function fx($xml, $i=2){$SW=New-Object System.IO.StringWriter;$XW=New-Object System.XMl.XmlTextWriter $SW; $XW.Formatting='indented';$XW.Indentation=$i;([xml]$xml).WriteContentTo($XW);$XW.Flush();$SW.Flush();Write-Output $SW.ToString();};FX (Get-Content -Path """%FileOld%""") -i 4" > "%FileNew%"
复制代码
参考:
stackoverflow
dostips
发表于 2023-11-12 00:05:44 | 显示全部楼层
感谢分享。
更简便的办法:
  1. PowerShell "([xml](gc 1.xml)).Save('2.xml')"
复制代码
发表于 2023-11-12 07:16:18 | 显示全部楼层
直接用 ie 打开查看更快捷
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 10:19 , Processed in 0.016388 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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