JDOM升级版练习

(手动建立xml文件即可)创建名字为“phones.xml”xml文件内容如下
<?xml version="1.0" encoding="UTF-8"?>
<phones>
 <sony>
  <z3 price="3000">
   2013年发布的索尼手机,防水
  </z3>
  <z4 price="4000">
   2014年发布的索尼手机,防水,高性能
  </z4>
  <z5 price="5000">
   2015年发布的索尼手机,防水,支持4k显示
  </z5>
 </sony>
 <apple>
  <ip5s price="3000">
   2013年发布的苹果手机,首款64位cpu,支持指纹的手机
  </ip5s>
  <ip6 price="4000">
   2014年发布的苹果手机,更大屏幕,240帧慢动作
  </ip6>
  <ip6s price="5000">
   2015年发布的苹果手机,强大的a9处理器,1200w摄像头,4k录制
  </ip6s>
 </apple>
</phones>


1)利用jdom解析上面xml文件,要求把价格大于3500的苹果手机,
价格小于4500索尼手机的【型号名及简介】以键值对存储到map中,并打印map内容到控制台。


2)利用jdom修改上面xml文件内容,并存储新文件“new_phones.xml”
    a)把ip5s手机价格减少500元

    b)把ip6s手机的简介后追加",支持3d touch"



package xml;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;

public class Test1 {
	public static void main(String[] args) throws Exception {
		demo2();
	}
	private static void demo2() throws Exception{
		SAXBuilder sb=new SAXBuilder();
		Document doc=sb.build(new File("src\\xml\\phones.xml"));
		Element apple=doc.getRootElement().getChild("apple");
		Element ip5s=apple.getChild("ip5s");
		int newPrice=ip5s.getAttribute("price").getIntValue()-500;
		ip5s.setAttribute("price", newPrice+"");
		Element ip6s=apple.getChild("ip6s");
		String newInfo=ip6s.getText().trim()+",支持3d touch";
		ip6s.setText(newInfo);
		Format format=Format.getPrettyFormat();
		XMLOutputter out=new XMLOutputter(format);
		out.output(doc, new FileOutputStream("src\\xml\\new_phones.xml"));
		System.out.println("修改完成");	
	}
	
	private static void demo1() throws Exception {
		SAXBuilder sb=new SAXBuilder();
		Document doc=sb.build(new File("src\\xml\\phones.xml"));
		Element phones=doc.getRootElement();
		Map<String,String> map=new HashMap<String,String>();
		
		List<Element> listSony=phones.getChild("sony").getChildren();
		List<Element> listApple=phones.getChild("apple").getChildren();
		for(Element sony:listSony ){
			int price=sony.getAttribute("price").getIntValue();
			if(price<4500){
				String name=sony.getName();
				String info=sony.getText().trim();
				map.put(name, info);
			}
		}
		for(Element apple:listApple){
			int price=apple.getAttribute("price").getIntValue();
			if(price>3500){
				String name=apple.getName();
				String info=apple.getTextTrim().trim();
				map.put(name, info);
			}
		}
		System.out.println("map:"+map);
		
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值