首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用unmarshall抓取文本值

如何使用unmarshall抓取文本值
EN

Stack Overflow用户
提问于 2021-12-21 20:46:40
回答 1查看 32关注 0票数 0

这是我的原始xml

代码语言:javascript
复制
<Descriptions>
    <description lang='en'> This is English version </description>
    <description lang='fr'> This is French version </description>
</Descriptions>

我无法为每个描述获取文本

代码语言:javascript
复制
Unmarshaller ums = JAXBContext.newInstance(Description.class).createUnmarshaller();

我的Decription.class是:

代码语言:javascript
复制
 import java.io.Serializable;
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlAccessType;
 import javax.xml.bind.annotation.XmlAttribute;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlRootElement;
 @XmlRootElement(name = "description")

 public class description implements Serializable {

    private static final long serialVersionUID = 1L;
    
    private String lang;
    private String text;

    public description() {
        super();
    }
    
    public description(String lang, String text) {
        super();
        this.lang = lang;
        this.text = text;
    }

    
    @Override
    public String toString() {
        return "description [lang=" + lang + ", text=" + text + "]";
    }
    @XmlElement(name = "lang")
    public String getLang() {
        return lang;
    }
    @XmlElement(name = "text")
    public String getText() {
        return text;
    }

    public void setLang(String lang) {
        this.lang = lang;
    }

    public void setText(String text) {
        this.text = text;
    }

}

但是,一旦我手动将Xml更改为以下格式,文本值就会被抓取。

代码语言:javascript
复制
<Descriptions>
    <description> 
        <lang> en</lang> 
        <text>This is English version </text>
    </description>
    <description> 
        <lang> fr</lang> 
        <text>This is French version </text>
    </description>
</Descriptions>

您有什么解决方案可以在不更改原始xml格式的情况下获取文本值?你能告诉我你的解决方案吗?

谢谢琳达

EN

回答 1

Stack Overflow用户

发布于 2021-12-21 21:46:58

您的Description与手动更改的XML匹配。这就是为什么它起作用了。

您已经声明了两个元素

代码语言:javascript
复制
    //  <lang>..</lang> 
    @XmlElement(name = "lang")
    public String getLang() {
        return lang;
    }

    //<text>..</text>
    @XmlElement(name = "text")
    public String getText() {
        return text;
    }

但是,实际的<description>元素有一个属性lang=..和内部文本值,因此您应该按如下方式更改Description类。

代码语言:javascript
复制
   //  lang='..'
   @XmlAttribute(name="lang")
   public String getLang() {
       return lang;
   }

   // inner text value e.g 'This is English version'
   @XmlValue
   public String getText() {
       return text;
   }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70441425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档