0

元のデータ:

<?xml version="1.0"?>
<CascadedExtractFileData>
<Country>
<IsoCountryCode>IN</IsoCo
untryCode>
<Provider>
<ItuCode>CASCADED_PROV</ItuCode>
<AccessInterconnect>
<CASCADE
D_INTERCONNECT_ID>50</CASCADED_INTERCONNECT_ID>
<TailTechnology>
<CASCADED_ACCESS_
METHOD_ID>1</CASCADED_ACCESS_METHOD_ID>
</TailTec
hnology></Access
Interconnect></
Provider><
/Country>
</C
ascad
edExtractFileData>

必須のように:

<?xml version="1.0"?>
<CascadedExtractFileData>
<Country>
<IsoCountryCode>
IN
</IsoCountryCode>
<Provider>
<ItuCode>
CASCADED_PROV
</ItuCode>
<AccessInterconnect>
<CASCADED_INTERCONNECT_ID>
50
</CASCADED_INTERCONNECT_ID>
<TailTechnology>
<CASCADED_ACCESS_METHOD_ID>
1
</CASCADED_ACCESS_METHOD_ID>
</TailTechnology>
</AccessInterconnect>
</Provider>
</Country>
</CascadedExtractFileData>

各タグ<></>新しい行、およびその間のデータが必要です。<>IN</>たとえばIN、新しい行でも必要です。完全に構造化された XML 形式が必要です。

Unix ツールを使用したソリューションが必要です: grepsedまたはawk

4

2 に答える 2

2

この行は、無効なxmlファイルの問題を修正します。

awk '{s=s $0}END{gsub(/></,">\n<",s);s=gensub(/>([^ \n>]*)</,">\n\\1\n<","g",s);print s}' file

出力:

<?xml version="1.0"?>
<CascadedExtractFileData>
<Country>
<IsoCountryCode>
IN
</IsoCountryCode>
<Provider>
<ItuCode>
CASCADED_PROV
</ItuCode>
<AccessInterconnect>
<CASCADED_INTERCONNECT_ID>
50
</CASCADED_INTERCONNECT_ID>
<TailTechnology>
<CASCADED_ACCESS_METHOD_ID>
1
</CASCADED_ACCESS_METHOD_ID>
</TailTechnology>
</AccessInterconnect>
</Provider>
</country>
</cascadedExtractFileData>
于 2013-03-23T17:37:59.733 に答える
-1

次のコマンドは、(XML タグを修正するために) 改行文字を削除し、結果をフォーマットできる xmllint に結果をパイプします。

cat data.xml | tr -d '\n' | xmllint -format -

次の出力:

<?xml version="1.0"?>
<CascadedExtractFileData>
  <Country>
    <IsoCountryCode>IN</IsoCountryCode>
    <Provider>
      <ItuCode>CASCADED_PROV</ItuCode>
      <AccessInterconnect>
        <CASCADED_INTERCONNECT_ID>50</CASCADED_INTERCONNECT_ID>
        <TailTechnology>
          <CASCADED_ACCESS_METHOD_ID>1</CASCADED_ACCESS_METHOD_ID>
        </TailTechnology>
      </AccessInterconnect>
    </Provider>
  </Country>
</CascadedExtractFileData>

アップデート

私の結果ファイルのフォーマットはあなたの要件と同じではありませんが、より明確にフォーマットされていることを提出します.

xmllint プログラムは、コマンドラインから XML を操作する場合に非常に便利なツールです。XML を検証およびフォーマットする機能に加えて、 xpathを使用した検索にも使用できます。

于 2013-03-23T23:07:33.913 に答える