0

私のアプリケーションが使用するファイル形式は Xml ベースです。不完全な xml ファイルを持っている顧客がいます。モノには約 90,000 行が含まれており、何らかの理由で約 20 個の「=」記号がランダムに散在しています。

それらのほとんどに対して、行番号と文字位置で XmlException を取得します。これにより、問題のある文字を見つけて手動で削除できます。このプロセスを自動化する小さなアプリを書き始めたばかりですが、破損した xml ファイルを修復するためのより良い方法があるかどうか疑問に思っていました。

失敗した行の例:

<item name="InstanceGuid" typ=e_name="gh_guid" type_code="9">ee330f9f-a1e2-451a-8c6d-723f066a6bd4</item>
                             ↑ (this is supposed to be [type_name])
4

3 に答える 3

1

二重引用符が続かない等号を検索できます。正規表現(regex)は、作成するのが非常に簡単です。

または、高度なテキストエディタでファイルを開き、同じ正規表現で検索して、検索および置換/削除することもできます。一部のテキストエディタでは、正規表現を検索/置換できるため、二重引用符が続かない等号を検索して削除することができます。

もちろん、元のXMLのコピーを保持します。これは、内部XMLに等号があると、混乱する可能性があるためです。

于 2009-09-10T23:17:47.340 に答える
1

正規表現を使用して、最初にxmlをクリーンアップします。

何かのようなもの:

s/([^\s"]+)=([^\s"]+="[^"]*")/\1\2/

明らかに、これは選択した正規表現エンジンに移植する必要があります:)

于 2009-09-10T23:20:42.290 に答える
1

TextPad で、正規表現 =[^"] を使用して検索すると、" が続かない = 記号がすべて見つかります。

これにより、rogue = 記号が出現したドキュメント内の場所が検出されます。それらを置き換えるには、まず TextPad でドキュメントを開きます。次に F8 を押します。

ダイアログで次のように入力します。

検索: =\([^"]\)

置換: \1

「正規表現」ボックスにチェックを入れ、「すべてのドキュメント」を選択し、「すべて置換」をクリックします

これは、" が続かないすべての = に一致し、= をそれに続く記号に置き換えます。

typename="テスト" typ=ename="テスト"

となります

typename="テスト" typename="テスト"

于 2009-09-10T23:38:09.897 に答える