我正在使用StaxDriver和XStream并试图解析这个XML:
<cad:MyObj xmlns:cad="namespace" cad:testeId="873" >
<cad:node1>value node 1</cad:node1>
</cad:MyObj>
进入一个物体。
我可以使用前缀解析node1,但我不知道如何使用Stax配置XStream以使用带有属性(cad
)的前缀testeId
。
这是我的conf:
QNameMap qnameMap = new QNameMap();
qnameMap.setDefaultPrefix("cad");
qnameMap.setDefaultNamespace("namespace");
StaxDriver stax = new StaxDriver(qnameMap);
stax.getInputFactory().setProperty(XMLInputFactory.IS_NAMESPACE_AWARE, true);
stax.setRepairingNamespace(true);
stax.setQnameMap(qnameMap);
xstream = new XStream(stax);
xstream.alias("MyObj", MyObj.class);
xstream.useAttributeFor(MyObj.class, "testeId");
我试图用这个“欺骗”:
xstream.aliasField("cad:testeId", ProdutoVersao.class, "testeId");
但没有效果= /
希望有人知道该怎么做。
答案 0 :(得分:0)
好。我认为使用XStream没有解决方案。
我已使用名称空间前缀映射器更改为JAXB:
http://blog.bdoughan.com/2011/11/jaxb-and-namespace-prefixes.html
Marshaller m = context.createMarshaller();
ProdutoVersaoPrefixMapper mapper = new ProdutoVersaoPrefixMapper();
m.setProperty("com.sun.xml.internal.bind.namespacePrefixMapper", mapper);
使用此代码,节点及其属性将获得前缀。