使用JAX-B获取标签的值以及子标签作为String或告诉我另一个标准。可以做到这一点的解析器

时间:2012-09-17 08:55:00

标签: xml-parsing jaxb

我有一个XML,它具有以下格式(简化示例)

<Service id = "1">
<Message>
<options id="standard"> 
                    <option name="autorendered"> 
                        <value> 1</value> 
                    </option> 
                    <option name="environment"> 
                        <value> V</value> 
                    </option> 
                    <option name="document_name"> 
                        <value> Mail - MY Test Mail2.pdf</value> 
                    </option> 
                    <option name="document_provider"> 
                        <value> LNotes</value> 
                    </option> 
</options>
</Message>
</Service>


<Service id = "2">
    <Message>
    <options id="standard"> 
                        <option name="autorendered"> 
                            <value> 4</value> 
                        </option> 
                        <option name="environment"> 
                            <value> V</value> 
                        </option> 
                        <option name="document_name"> 
                            <value> attachment1.jpg</value> 
                        </option> 
                        <option name="document_provider"> 
                            <value> LNotes</value> 
                        </option> 
    </options>
    </Message>
    </Service>

现在,当我使用JAXB并创建映射类时,它正常工作。但我需要Message标签的值,无论它们之间是什么字符串,但如果我这样做,它返回空值。 但如果我有一个像hello这样的标签并使用service.getMessage(),它会正确地返回hello

我希望service.getMessage以字符串形式返回<options>.....</option>

如果在JAX-B中不可能,请向我推荐一些其他类似Jaxpath,Xpa​​th,Stax或其他一些std认可的方法。

我的服务类看起来像这样 -

public class Service {      
    private Request request;

    @XmlElement(name = "Request")
    public Request getRequest() {
        return request;
    }

    public void setRequest(Request edmsRequest) {
        this.request = request;
    }

}

2 个答案:

答案 0 :(得分:0)

当JAXB创建POJO时,您是否有足够的方法可以根据需要创建字符串?
您可以创建一个实用程序方法来执行相同操作。

答案 1 :(得分:0)

@XmlAnyElement注释可用于将XML文档的某些部分保留为生成的对象结构中的XML。 @XmlAnyElement注释允许您设置DomHandler,它允许您控制XML的表示方式:DOM,String等。

<强>实施例