3

多数のXMLファイルで属性が欠落している要素を検索するユーティリティを作成するように依頼されました。担当部門は、何百ものファイルを壊してしまうため、DTDで属性を必須にすることはできません。彼らは、数日/数週間にわたって手動で編集したいと考えています。

Scala2.8.1で小さなコマンドラインツールを書いています。コードを関数型プログラミングで純粋に保ち、マルチスレッドで実行できるように、「プル」パーサーを使用します。

XMLイベントの場所が必要です。Java 6()で提供されるAPIには、イベントの行番号を返すjavax.xml.stream. XMLStreamReaderメソッド( )があります。getLocation()これを使用して、欠落している属性を探す場所をユーザーに通知するメッセージを作成できます。

でプルパーサーを使用したいのですがscala.xml.pull.XMLEventReader、位置情報を提供していないようです。

私は何かが足りないのですか?それはScalaAPIのどこかにありますか?

4

1 に答える 1

3

私が見る限り、これはXMLEventReaderAPIによって提供されていません。

それは依存してio.Sourceおり、その場所へのアクセスを提供できますが、提供しません。ポジションにアクセスできるオブジェクトはプライベートであるため、これを回避する簡単な方法はわかりません。

あなたはその位置XMLEventReaderで習慣を生み出すあなた自身のコピーを作りたいかもしれません。XMLEvent変更する方法は override def elemStart、その位置にアクセスできEvPos(line:Int, column:Int)、それぞれの後に別の位置を生成できる方法EvElemStartです。

特定のパフォーマンス関連のバグが修正されたため、2.9.RC1の使用を検討することもできます。

于 2011-04-19T13:49:20.093 に答える