2017-09-07 3 views
0

不正な形式のXMLファイルが生成されています(不正なXMLファイルにつながっています)。以下のようなJavaファイル内のシェルコマンドの助けを借りて、閉じタグを追加余分を削除することによって、この問題:不正な形式のXMLファイルで余分に追加された「閉じられたタグ」を削除する方法

int NoofTags=Integer.parseInt(CommandExecution("grep -c \"</person>\" " + file + "").toString().trim()); 
if(NoofTags > 1) 
{ 
     CommandExecution("sed -i \'/^<\\/person>$/d\' " + file + "");//Remove all </person> tags in the XML file 
     CommandExecution("echo \'</person>\' "+ " >> " + file + "");//Adding </person> tag at end of the XMLfile 
} 

ここで「ファイルは」XMLファイルである「人は」ここでは、ルートelement.Issueされています。 </person>複数のタグがXMLファイルの途中でランダムに追加されてしまいます(これは不正な形式のXMLにつながります)。だから私はsedコマンドを使って一度にすべての閉じたタグを削除し、ファイルの最後に閉じたタグを1つ追加してルート要素の "人"を閉じました。ここで問題は解決しました。

しかし、私はJavaのXML解析技術を使ってこれを解決できませんでした。

Java XML解析技術(例:DOMパーサ)の助けを借りて、この問題を解決するのに役立ちますか?

+0

おそらく、不正な形式のXMLファイルを作成するプロセスを修正することで解決する方がよいでしょう。 – GriffeyDog

+0

あなたが書いたJavaコードを共有できますか? – procrastinator

+0

java xmlパーサは、エラーがあなたのXML文書のどこにあるのかを教えてくれます...おそらくその情報を使ってxmlを修正することができます。 –

答えて

0

JavaでXMLを解析すると、入力が「整形式」ではないと判明した場合、APIの大部分(私が見てきたすべて)が例外をスローします。これは、入力が "整形式"でなく技術的にXMLでない場合です。

XMLを解析するときは、整形式ではないものは拒否することをお勧めします。

症状を修正するのではなく、バグや問題の原因を解決することもお勧めします。

私の提案は、XMLの生成を修正することです。

+0

あなたの提案をありがとう。私はあなたが提案したとおりに実装します。しかし、私はこの問題を一時的なものとして修正する必要があります。あなたは、JavaのXML解析技術の助けを借りて、追加された閉じたタグを削除する方法を教えていただけますか? –

+0

XMLを解析するためにいくつかのAPIを使用していますが、構造が間違っていると例外がスローされますが、間違った終了タグの場所を特定するためのヒントがいくつか見つかるはずです。あなたのString。これは素晴らしい解決策ではありませんが、適切に修正するのと同じくらい難しい場合もあります。 – MartinByers

関連する問題