解析xml到指定对象

针对xml里面内容有集合,指定对象需要接收,但是用fastjson转换,list接收结果是空的

 

引入包:com.thoughtworks.xstream.XStream

使用:

//实例化

XStream xStream = new XStream();

//开启注解扫描

xStream.autodetectAnnotations(true);

//忽略掉位置xml要素

xStream.ignoreUnknownElement();

//转换

XStream.alias("获取xml的制定节点",所要转换对象的.class);

所需对象 = (所需对象)xStream.fromXML(xml字符串);

 

注:实体类所包含的list里面的实体类,要在类上加上注解

如果你所转换对象里面的字段与xml节点不一致的话,需要使用注解

@XStreamAlias(“对应xml节点名称”)

list字段名一致的话,需不需要加我没尝试,我的不一致;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。 使用SAX解析解析XML文件可以获取指定元素。SAX解析器是一种基于事件的解析器,它在解析XML文件时,会触发一系列事件,我们只需要在事件处理函数中获取指定元素即可。 下面是使用Java语言中的SAX解析器获取指定元素的示例代码: ```java import java.io.File; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.helpers.DefaultHandler; public class MySAXParser extends DefaultHandler { private boolean bElement = false; private String elementName = "指定元素名称"; public void startElement(String uri, String localName, String qName, Attributes attributes) { if (qName.equalsIgnoreCase(elementName)) { bElement = true; } } public void characters(char[] ch, int start, int length) { if (bElement) { System.out.println(new String(ch, start, length)); bElement = false; } } public static void main(String[] args) { try { File inputFile = new File("input.xml"); SAXParserFactory factory = SAXParserFactory.newInstance(); SAXParser saxParser = factory.newSAXParser(); MySAXParser userhandler = new MySAXParser(); saxParser.parse(inputFile, userhandler); } catch (Exception e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们创建了一个名为`MySAXParser`的类,继承了`DefaultHandler`类并实现了其中的方法。在`startElement`方法中,我们判断当前解析到的元素是否为指定元素,如果是则将`bElement`标记为`true`;在`characters`方法中,我们判断`bElement`是否为`true`,如果是则输出该元素的值。 最后,在`main`方法中,我们创建了一个`saxParser`对象,并调用它的`parse`方法来解析XML文件。当解析指定元素时,就会触发`startElement`和`characters`方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值