1

私はデータ移行に取り組んでおり、html を解析して xml にエクスポートしています。もちろん、html は xml に入るときにエスケープされますが、解析が適切に行われていることを確認するために、角かっこをデコードして xml 内の読み取り可能な html タグを取得しています。ただし、タグはすべて一緒に実行されており、まだあまり読みやすくありません。

私が持っているタグ構造を単純にインデントできるものはありますか? 有効なxmlでもhtmlでもありません。xmllint --formatとを試しましxmllint --htmloutたが、どちらも異なるポイントでチョークします。

これを手動で行うことを避けることはできますか?

以下に小さな例を示します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<result><node><title>This would be the title</title><uri>/path/filename.jpg</uri><alt>Alt tag data</alt><body><p>Some text goes here.</body></node></result>

実際のデータでは、内部の html タグ<body>はすべて and にエスケープされて&lt;&gt;ますが、解析が正しく機能しているかどうかを確認するのは難しすぎました。そのため、検索と置換を使用して、それらを同等のブラケットに変更しました。しかし、まだインデントされていないため、読みにくいです。

と の両方がtidy、終了タグxmllintの欠落について不平を言っています。<p>このデータには、多数の欠落または不一致のタグがあります。これが有効な html または xml ではないことは理解していますが、後で行う html のクリーンアップです。この時点で、html が適切な場所で解析されていることを確認する必要があります。改行やインデントはありません。

上記の例を修正するには、タグを手動で削除または閉じることができ<p>ますが、実際のデータには多くの破損があり、書式設定のために解析するためだけにタグを修正するのは簡単ではありません。この段階では、手作業によるマッサージを避け、自動化された方法で行うようにしています.

たとえば、この 1 つのファイルについて、tidy は 65 の警告と 778 のエラーを報告します。それらをすべて手作業で修正するのは時間の無駄です。非厳密な方法でインデントでき、一致しないタグを気にしないものが必要です。

4

3 に答える 3

1

ユーザーJosh Leitzelがここに投稿したフォーマット機能を使用しました。完璧ではありませんが、十分です。

于 2013-02-25T20:29:38.267 に答える
1

試してください:

$ tidy -h
tidy [option...] [file...] [option...] [file...]
Utility to clean up and pretty print HTML/XHTML/XML

http://tidy.sourceforge.net/を参照してください。

編集

あなたの問題は<p>タグだけです。削除する必要があります:

$ xmllint --format file.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<result>
  <node>
    <title>This would be the title</title>
    <uri>/path/filename.jpg</uri>
    <alt>Alt tag data</alt>
    <body>Some text goes here.</body>
  </node>
</result>

エラーなし。

編集 2

私の考えでは、HTMLタグなしでxmlをフィードするようなツールを使用することですhtml2text。おそらく、HTMLファイルのインデントをXML CTAGSに保存できます

于 2013-02-25T19:11:19.180 に答える