3

xストリーム

次の XML コードがある場合:

<xml>
  <version>1.1</version>
  <url>http://www.google.nl</url>
</xml>

そして、私はJavaコードでこれを読んで、すべて正常に動作しますが、XMLが次のように変更された場合:

<xml>
  <test>test</test>
  <version>1.1</version>
  <url>http://www.google.nl</url>
</xml>

エラーが出ますが、プログラムが停止しないようにしたい、フィールドテストを使用しないでください。プログラムを停止せずにこの例外を処理する方法はありますか?

Exception in thread "main"         com.thoughtworks.xstream.converters.reflection.AbstractReflectionConverter$UnknownFieldExce    ption: No such field Version.iets
---- Debugging information ----
field               : iets
class               : Version
required-type       : Version
converter-type      :     com.thoughtworks.xstream.converters.reflection.ReflectionConverter
path                : /Version/iets
line number         : 1
version             : null
-------------------------------
4

2 に答える 2

5

XStream 1.4.5 では、未知のタグを簡単に処理できます。まだ実装されていないか削除されていて、古い xml を扱っているタグには ignoreUnknownElements を使用します。

http://x-stream.github.io/javadoc/com/thoughtworks/xstream/XStream.html#ignoreUnknownElements%28%29

無視する特定のタグを指定することもできます。

于 2013-10-15T17:27:06.357 に答える
0

Brian Agnew のおかげで、私は答えを見つけました。これが解決策です。

XStream xstream = new XStream(new DomDriver()) {
            protected MapperWrapper wrapMapper(MapperWrapper next) {
                return new MapperWrapper(next) {
                    public boolean shouldSerializeMember(Class definedIn, String fieldName) {
                        try {
                            return definedIn != Object.class || realClass(fieldName) != null;
                        } catch(CannotResolveClassException cnrce) {
                            return false;
                        }
                    }
                };
            }
        };
于 2012-05-31T21:08:21.583 に答える