同问Xstream解析XML文件的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了同问Xstream解析XML文件的问题相关的知识,希望对你有一定的参考价值。

检举|2012-07-24 16:18提问者:a30501139|悬赏分:30|浏览次数:147次
<cat age="4" name="Garfield">

<owner class="StandardPerson">Jon Arbuckle</>
</cat>
XStream xstream = new XStream();
xstream.alias("cat", Cat.class);
xstream.alias("owner", Owner.class);
xstream.aliasAttribute(Cat.class, "age", "age");
xstream.aliasAttribute(Cat.class, "name", "name");

xstream.aliasAttribute(Owner.class, "class", "class");
Object o = xstream.fromXML(data);
return (Cat) o;

如果XML文件像这样的格式,那owner对象里的Jon Arbuckle应该怎么赋值取到??
这个您解决了吗?

解决了,后来没用xStream。给你个例子
try
JAXBContext context = JAXBContext.newInstance(ATS_IFS.class);
Unmarshaller unmarshaller = context.createUnmarshaller();
ATS_IFS atsIfs = (ATS_IFS) unmarshaller.unmarshal(new ByteArrayInputStream(data
.getBytes()));
return atsIfs;
catch (JAXBException e)
e.printStackTrace();
return null;


data是xml的字符串,new ByteArrayInputStream(data.getBytes())你这里可以根据自己的需求来定义用什么inputStream。
ATS_IFS类必须要有注释
具体的你可以查一下jaxb,例子很多追问

我用xstream解决了,网上有例子,找到了,先不看明白。谢谢了。

来自:求助得到的回答
参考技术A 你直接在你的Cat里定义个owen你就直接可以用cat.owen就可以

Xstream 解析xml文件内容

刚刚接手的一个项目,接到一个对接用户数据的需求,对方使用的是xml格式来传输文件,特此记下解析该类文件的方法

public interface XmlResolver<T> {
    XStream builder();

    default T parse(String xml){
        return (T) builder().fromXML(xml);
    }

    default T resolver(String xml){
        return parse(xml);
    }
}
    //测试类
public class TestMain {

    private String name;
    private String address;
    private List<TestPerson> personList;

    public static void main(String[] args) {
        XmlResolver<TestMain> testMainXmlResolver = () -> {
            {
                XStream xStream = new XStream();
                xStream.alias("GetInvoiceResult", TestMain.class);
                xStream.alias("ItemRecord", TestPerson.class);
                return xStream;
            }
        };

       String xml = "<GetInvoiceResult>\n" +
                "        <name>string</name>\n" +
                "        <address>string</address>\n" +
                "        <personList>\n" +
                "          <ItemRecord>\n" +
                "            <name>string</name>\n" +
                "            <age>string</age>\n" +
                "          </ItemRecord>\n" +
                "          <ItemRecord>\n" +
                "            <name>string</name>\n" +
                "            <age>string</age>\n" +
                "          </ItemRecord>\n" +
                "        </personList>\n" +
                "      </GetInvoiceResult>\n"
                ;
        TestMain testMain = testMainXmlResolver.parse(xml);
        System.out.println(testMain);
    }
}

以上是关于同问Xstream解析XML文件的问题的主要内容,如果未能解决你的问题,请参考以下文章

xStream转换xml同名节点到java对象问题

XStream解析xml代码

微信公众号xml数据解析之xstream

XStream xml 解析框架使用笔记

XStream解析xml格式的字符串的方法

java使用xstream解析xml 属性和节点问题