Board logo

标题: [文本处理] [分享]BAT调用PowerShell把单行XML格式美化为多行 [打印本页]

作者: ShowCode    时间: 2023-11-11 21:36     标题: [分享]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
作者: WHY    时间: 2023-11-12 00:05

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

作者: Five66    时间: 2023-11-12 07:16

直接用 ie 打开查看更快捷




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