【问题标题】:Castor read an attribute of a text elementCastor 读取文本元素的属性
【发布时间】:2020-12-29 17:00:52
【问题描述】:

我想知道如何使用脚轮映射(版本 0.9.9.1)进行映射。

<Classifica>
    <Livello nome="812">1</Livello>
</Classifica>

我需要的是 nome 属性的值。

我试过了:

<class name="it.ClassificaIDT" auto-complete="true">
    <map-to xml="Classifica"/>
    <field name="livello"
           type="it.LivelloIDT"
           container="false">
      <bind-xml name="Livello"/>
    </field>
  </class>
  <class name="it.LivelloIDT" auto-complete="true">
    <map-to xml="Livello"/>
    <field name="nome">
      <bind-xml name="nome" node="attribute"/>
    </field>
  </class>

我的班级是:

package it;

public class ClassificaIDT {
    private LivelloIDT livello;

    public LivelloIDT getLivello() {
        return livello;
    }

    public void setLivello(LivelloIDT livello) {
        this.livello = livello;
    }
}

上面给出了这个错误:

Caused by: Illegal Text data found as child of: Livello
  value: "1"{file: [not available]; line: 42; column: 56}
    at org.exolab.castor.xml.Unmarshaller.unmarshal(Unmarshaller.java:671)
    at it.bz.prov.egov.foundation.fascicoloinformatico.service.eprocs.XMLConverter.createOutputForEProcsWebService(XMLConverter.java:121)
    ... 148 more
Caused by: org.xml.sax.SAXException: Illegal Text data found as child of: Livello
  value: "1"
    at org.exolab.castor.xml.UnmarshalHandler.endElement(UnmarshalHandler.java:889)

如何忽略值“1”?或者更好的是,如何将其映射到类属性?

谢谢。

【问题讨论】:

    标签: java castor


    【解决方案1】:

    我找到了解决办法:

    映射:

    <class name="it.LivelloIDT" auto-complete="true">
        <map-to xml="Livello"/>
        <field name="nome" type="java.lang.String" get-method="getNome" set-method="setNome">
          <bind-xml name="nome" node="attribute"/>
        </field>
        <field name="text" type="java.lang.String">
          <bind-xml node="text" />
        </field>   </class>
    

    类:

    public class LivelloIDT {
        private String nome;
        private String text;
    
        public String getNome() {
            return nome;
        }
    
        public void setNome(String nome) {
            this.nome = nome;
        }
    
        public String getText() {
            return text;
        }
    
        public void setText(String text) {
            this.text = text;
        }
    }
    

    注意文本字段

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-09
      • 1970-01-01
      • 2014-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多