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

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

假设有一个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
测试代码之前请做好备份

直接用 ie 打开查看更快捷

TOP

感谢分享。
更简便的办法:
  1. PowerShell "([xml](gc 1.xml)).Save('2.xml')"
复制代码

TOP

返回列表