标签: xstream

如何从文档或节点创建InputStream

如何从要在xstream中使用的XML Document或Node对象创建InputStream对象?我需要更换??? 用一些有意义的代码.谢谢.

Document doc = getDocument();
InputStream is = ???;
MyObject obj = (MyObject) xstream.fromXML(is);
Run Code Online (Sandbox Code Playgroud)

java xml xstream

26
推荐指数
2
解决办法
5万
查看次数

XStream的安全框架未初始化,XStream可能容易受到攻击

Security framework of XStream not initialized, XStream is probably vulnerable

使用XStream(1.4.10)时,我一直将此控制台错误显示为红色

我尝试了以下方法:

XStream.setupDefaultSecurity(xs);

xs.addPermission(AnyTypePermission.ANY); xs.addPermission(NoTypePermission.NONE);

没有一个摆脱它.

我不需要任何花哨的安全设置,我只想沉默那个警告.也许还准备1.5.x的代码

java xstream

25
推荐指数
2
解决办法
2万
查看次数

如何禁用XStream中的漂亮打印(空白/换行符)?

这是我为XML创建XStream实例的方法:

XStream xstream = new XStream();
Run Code Online (Sandbox Code Playgroud)

这适用于JSON:

private final XStream xstream = new XStream(new JsonHierarchicalStreamDriver() {
        public HierarchicalStreamWriter createWriter(Writer writer) {
            return new JsonWriter(writer, JsonWriter.DROP_ROOT_MODE);
        }
    });
Run Code Online (Sandbox Code Playgroud)

它们都是非常打印(缩进)输出.

如何让XStream禁用漂亮的打印?

java xml json xstream

21
推荐指数
2
解决办法
1万
查看次数

XStream和下划线

看起来像XStream(com.thoughtworks.xstream - > xstream 1.4.2)以非常奇怪的方式处理元素和属性名称中的下划线.我需要从客户端获取并解析xml,这些客户的属性中包含下划线.这是我第一次尝试使用XStream,我有点失望,因为我希望避免所有丑陋的xml解析.

在这里,我提供了一个小测试样本来点亮行为.最后一个例子显示了我的问题.

public class MyTest {
  public void testIt() {
    C1 a = new C1();
    a.a_b= "a_b";

    XStream xstream = new XStream();
    xstream.processAnnotations(C1.class);

    String xml = xstream.toXML(a);
    Logger.info(xml);

    C1 b = (C1) xstream.fromXML(xml);
    Logger.info(b.a_b);

    C1 c = (C1) xstream.fromXML("<C1 a_b=\"a_b\"/>");
    Logger.info(c.a_b);
  }
}

@XStreamAlias("C1")
class C1 {
@XStreamAsAttribute
String a_b;
}
Run Code Online (Sandbox Code Playgroud)

这输出

INFO: <C1 a__b="a_b"/>
INFO: a_b
INFO: null
Run Code Online (Sandbox Code Playgroud)

现在我的问题 - 有没有办法让XStream理解一个下划线?

java xml xstream

21
推荐指数
3
解决办法
8608
查看次数

如何在解析XML时使XStream跳过未映射的标签?

我有一个大型XML文档,我想将其转换为Java bean.它有很多标签和属性,但我只对少数几个感兴趣.不可思议的是,似乎XStream强制您在该bean中为每个可能在该XML中的标记声明一个属性.有没有解决的办法?

xml xstream

20
推荐指数
4
解决办法
2万
查看次数

com.thoughtworks.xstream.security.ForbiddenClassException

我在我们的一个 Web 应用程序中将 xstream (1.4.8) lib 更新到最新版本时遇到了此异常。异常是从使用旧版本的 xstream (1.3.1) 编译的依赖 jar 中抛出的。我使用xstream-1.4.8重新编译并构建了新的jar(依赖jar)并再次部署了war文件,但仍然得到相同的异常。最初我认为这是由于版本不匹配造成的,现在我不确定是什么导致了这个异常,而且网上没有太多文档。有什么想法吗?

谢谢,卡蒂克

抛出异常的实际调用:

TestList list = (TestList)xs.fromXML(new StringReader(testData));
Run Code Online (Sandbox Code Playgroud)

其中 testData 是 xml 字符串

TestList.java类

@XStreamAlias("Assets")
public class TestList extends ParentObject {

@XStreamImplicit(itemFieldName = "item")
protected List<Item> item= new ArrayList<Item>();

public void add(Item item) {
item.add(item);
}

public List<Item> getItems() {
    if(item== null)
        return new ArrayList<Item>();
    else
        return item;
}

@Override
public String getStringData() {
StringBuilder builder = new StringBuilder();

for (Item item : items) {
    builder.append(item.getStringData());
    builder.append("---------------\n");
}

return …
Run Code Online (Sandbox Code Playgroud)

java xstream

20
推荐指数
2
解决办法
3万
查看次数

XStream:具有属性和文本节点的节点?

我想使用XStream将对象序列化为此表单的XML.

<node att="value">text</node>
Run Code Online (Sandbox Code Playgroud)

节点(文本)的值是序列化对象上的字段,以及att属性.如果没有为此对象编写转换器,这可能吗?

谢谢!

java xml xstream

18
推荐指数
2
解决办法
1万
查看次数

使用对先前标记的引用解析XML,并使用与某些类的子类型对应的子代

我必须处理以下场景(的变体).我的模型类是:

class Car {
    String brand;
    Engine engine;
}

abstract class Engine {
}

class V12Engine extends Engine {
    int horsePowers;
}

class V6Engine extends Engine {
    String fuelType;
}
Run Code Online (Sandbox Code Playgroud)

我必须反序列化(不需要序列化支持ATM)以下输入:

<list>

    <brand id="1">
        Volvo
    </brand>

    <car>
        <brand>BMW</brand>
        <v12engine horsePowers="300" />
    </car>

    <car>
        <brand refId="1" />
        <v6engine fuel="unleaded" />
    </car>

</list>
Run Code Online (Sandbox Code Playgroud)

我尝试/发布的内容:

我尝试过使用XStream,但它希望我写下这样的标签:

<engine class="cars.V12Engine">
    <horsePowers>300</horsePowers>
</engine>
Run Code Online (Sandbox Code Playgroud)

等等.(我不想要的<engine>-标签,我想<v6engine>-标签一个<v12engine>-标记.

此外,我需要能够根据标识符返回"预定义"品牌,如上面的品牌ID所示.(例如,Map<Integer, String> predefinedBrands在反序列化期间保持一个).我不知道XStream是否适合这种情况.

我意识到这可以通过推或拉解析器(例如SAX或StAX)或DOM库"手动"完成.但是我希望有更多的自动化.理想情况下,我应该能够添加类(例如new Engines)并立即开始在XML中使用它们.(XStream绝不是必需品,最优雅的解决方案赢得赏金.)

java xstream xml-deserialization xml-parsing

17
推荐指数
1
解决办法
1929
查看次数

Java XStream库的现代替代品?

我多年前使用过XStream,但我发现这些库自2008年以来没有更新(最新消息).现在是否有更现代化和最新的Java XML序列化库?

java xml xstream

15
推荐指数
3
解决办法
1万
查看次数

如何使用XStream框架编码UTF-8?

根据XStream的FAQ,它的默认解析器不保留UTF-8文档编码,并且必须提供自己的编码器.怎么做到这一点?

谢谢!

xml encode xstream utf-8

14
推荐指数
2
解决办法
2万
查看次数

标签 统计

xstream ×10

java ×8

xml ×7

encode ×1

json ×1

utf-8 ×1

xml-deserialization ×1

xml-parsing ×1