2

タグのようなxmlと多数の無効なxmlデータを含むファイルがあります。そのため、ファイルでxmllintのような通常のxmlバリデーターを使用できません。無効なxmlデータを無視して、ファイルの形式が正しいかどうかを確認したいと思います。

<?xml version="1.0" encoding="utf-8"?>
<HOST>
<VERSION>5</VERSION> 
<OUTPUT>
   bunch of text which also contains tags like  <SYSTEM> 
   more tags like <->   <temp>  & ; 
   some more text and numbers
 </OUTPUT>
</HOST>

上記の例では、<system>、<->、&、;などのタグを無視できますか?など、<HOST> </ HOST> <VERSION></VERSION>や<OUTPUT></OUTPUT>などの有効な開始タグと終了タグを確認してください。上記のファイルは、すべての有効なタグに適切な開始ブラケットと終了ブラケットがあるため、整形式であると言って戻る必要があります。

独自のdtd/xsdを作成できますか?必要なタグを探し、Perlを使用して残りのタグを無視します。

私の主な問題は、私の問題を説明するための正しいキーワードがわからないことです。そのため、グーグルは私に正しい結果を与えていません。誰かが私を正しい方向に押してくれませんか。ありがとう

4

2 に答える 2

2

何がポイントなのか聞いてもいいですか?入力ファイルはXMLではないため、CDATAセクションを追加してXMLにする必要はありません。データの「一部」がXMLであるかどうかを知ることで何が得られますか?XMLツールを使用できるようになるわけではなく、ypoがXMLとして配信できるようになるわけでもありません。

したがって、実際には、この非検証では何も得られません。それでは少し時間の無駄ではないですか?

于 2012-08-24T14:31:06.960 に答える
1

最初に入力をクリーンアップする必要があります。これを実行すると、DTD、スキーマ、適切な解析などを実行できます。

OUTPUTタグだけの場合は、次のことを試すことができます。

s/(<OUTPUT>)/$1<![CDATA[/;
s/(</OUTPUT>)/]]>$1/;

その後、入力はXML解析、検証などの準備ができているはずです。入力にCDATAセクションが含まれている可能性がある場合は、さらに多くのことを行う必要がありますが、開始するにはそれで十分です。

于 2012-08-24T13:13:13.683 に答える