【发布时间】:2019-07-04 11:07:43
【问题描述】:
我有一个带有标签的 XML 文件。我想像这样拆分文件。
<?xml version="1.0" encoding="UTF-8"?>
<EMPRMART CREATION_DATE="08/20/2018 18:06:44" REPOSITORY_VERSION="187.96">
<REPOSITORY NAME="REP_DEV" VERSION="187" CODEPAGE="UTF-8" DATABASETYPE="Sybase">
<FOLDER NAME="MC_DEV"
<CONFIG DESCRIPTION ="Default ORDER configuration object" ISDEFAULT ="YES" NAME ="default_ORDER_config" VERSIONNUMBER ="1">
<ATTRIBUTE NAME ="Advanced" VALUE =""/>
<ATTRIBUTE NAME ="Order type" VALUE ="NO"/>
</CONFIG>
<ORDER DESCRIPTION ="" ISVALID ="YES"
<ATTRIBUTE NAME ="Normal" VALUE =""/>
<ATTRIBUTE NAME ="Order type" VALUE ="NO"/>
</ORDER>
<ORDER DESCRIPTION ="" ISVALID ="YES"
<ATTRIBUTE NAME ="Medium" VALUE =""/>
<ATTRIBUTE NAME ="Order type" VALUE ="NO"/>
</ORDER>
<ORDER DESCRIPTION ="" ISVALID ="YES"
<ATTRIBUTE NAME ="Advanced" VALUE =""/>
<ATTRIBUTE NAME ="Order type" VALUE ="NO"/>
</ORDER>
<LOCATION DESCRIPTION ="" ISENABLED ="YES"
</LOCATION>
</FOLDER>
</REPOSITORY>
</EMPRMART>
下面是尝试过的代码。但它会将每一行生成一个新文件
awk '
BEGIN { RS = "</ORDER>" }
$0 ~ /[^[:blank:]\n]/ {
printf "%s\n", $0 RS >> FILENAME "_" ++i ".xml"
}
' test.xml
我想单独基于 ORDER 标签分割这个文件,如下所述
File1.xml
<ORDER DESCRIPTION ="" ISVALID ="YES"
<ATTRIBUTE NAME ="Normal" VALUE =""/>
<ATTRIBUTE NAME ="Order type" VALUE ="NO"/>
</ORDER>
File2.xml
<ORDER DESCRIPTION ="" ISVALID ="YES"
<ATTRIBUTE NAME ="Medium" VALUE =""/>
<ATTRIBUTE NAME ="Order type" VALUE ="NO"/>
</ORDER>
File3.xml
<ORDER DESCRIPTION ="" ISVALID ="YES"
<ATTRIBUTE NAME ="Advanced" VALUE =""/>
<ATTRIBUTE NAME ="Order type" VALUE ="NO"/>
</ORDER>
【问题讨论】:
-
您的 XML 无效。节点名称为
ORDER的节点未关闭。FOLDER和LOCATION相同您缺少>