3

xStream

当我有以下 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 回答