不要通过xstream读取XML中的元素值

时间:2013-07-15 04:44:16

标签: java xml xml-parsing xstream

我有一个类似下面的XML,我使用XStream来解析这个XML

<Annotation name="uniqueMembers">true</Annotation>

和Annotation的类:

@XStreamAlias("Annotation")
public class Annotation {
@XStreamAsAttribute
private String name;

private String value;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getValue() {
    return value;
}

public void setValue(String value) {
    this.value = value;
}
}

我需要这个标签的“真实”值,但是当我打电话时

 xStream.fromXML("myXml.xml");

它具有空值 为什么?我怎样才能得到这个标签的“真实”?

编辑: MyXml.xml的一部分

<Dimension name="Branch" >
    <Hierarchy name="xxx" primaryKey="" hasAll="true" allMemberName="All" >
        <Table schema="vvv" name="ccc" />

        <Level name="State"  captionColumn="STATE_NAME" uniqueMembers="true" type="Integer" />
        <Level name="City"  captionColumn="CITY_NAME" uniqueMembers="true" type="Integer">
            <Annotations>
                <Annotation name="uniqueMembers">true</Annotation>
            </Annotations>
        </Level>
        <Level name="Branch" captionColumn="BRANCH_NAME" uniqueMembers="true" type="Integer" >
            <Annotations>
                <Annotation name="uniqueMembers">true</Annotation>
            </Annotations>
        </Level>
    </Hierarchy>
</Dimension>

2 个答案:

答案 0 :(得分:0)

试试这个XML代码段:

<Annotation>
    < uniqueMembers>true< /uniqueMembers>
</Annotation>

答案 1 :(得分:0)

正如目前所写的那样,你在那里展示的课程需要像

这样的课程
<Annotation name="something">
  <value>the value</value>
</Annotation>

要摆脱<value>元素并使用<Annotation>元素的内容,您需要使用ToAttributedValueConverterthis blog post有详细信息,但基本上您需要添加

@XStreamConverter(value=ToAttributedValueConverter.class, strings={"value"})

作为Annotation类的类级注释。