【问题标题】:Parsing XML node's attribute with prefixes - XSTREAM/JAVA使用前缀解析 XML 节点的属性 - XSTREAM/JAVA
【发布时间】:2012-03-20 20:20:50
【问题描述】:

我正在使用带有 XStream 的 StaxDriver 并尝试解析此 XML:

<cad:MyObj xmlns:cad="namespace" cad:testeId="873" >
  <cad:node1>value node 1</cad:node1>
</cad:MyObj>

变成一个对象。

我可以使用前缀解析 node1,但我不知道如何使用 Stax 配置 XStream 以使用前缀 cad 和属性 (testeId)。

这是我的会议:

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");

但没用 =/

希望有人知道怎么做。

【问题讨论】:

    标签: java xml xstream


    【解决方案1】:

    嗯。我认为使用 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);
    

    使用此代码,节点及其属性获得前缀。

    【讨论】:

      猜你喜欢
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多