49.将手机收藏信息保存到文件中

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class ParseXMLDemo {
    private Document document=null;
    public static void main(String[] args) {
        ParseXMLDemo pd=new ParseXMLDemo();
        pd.getDocument();
        pd.showInfo();
//        pd.add();
//        pd.update();
//        pd.savaXML("new.xml");
//        pd.delete();
    }

    public void getDocument(){
        DocumentBuilderFactory  factory=DocumentBuilderFactory.newInstance();
        try {
            DocumentBuilder builder=factory.newDocumentBuilder();
            document=builder.parse("收藏信息.xml");
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //获取手机品牌和属性
    public void showInfo(){
        NodeList brands=document.getElementsByTagName("Brand");
        for(int i=0;i<brands.getLength();i++){
            Node node=brands.item(i);
            Element eleBrand=(Element)node;
            System.out.println(eleBrand.getAttribute("name"));

            NodeList types=eleBrand.getChildNodes();
            for(int j=0;j<types.getLength();j++){
                Node typeNode=types.item(j);
                if(typeNode.getNodeType()==Node.ELEMENT_NODE){
                    Element eleType=(Element)typeNode;
                    System.out.println(eleType.getAttribute("name"));
                }
            }
        }
    }

    //保存XML文件
    public void savaXML(String path){
        TransformerFactory factory=TransformerFactory.newInstance();
        factory.setAttribute("indent-number", "4");
        try {
            Transformer transformer=factory.newTransformer();
            transformer.setOutputProperty(OutputKeys.ENCODING, "gb2312");
            transformer.setOutputProperty(OutputKeys.INDENT, "yes");
//            StreamResult result=new StreamResult(new FileOutputStream(path));
            StreamResult result=new StreamResult(new OutputStreamWriter(new FileOutputStream(path), "gb2312"));
            DOMSource  source=new DOMSource(document);
            transformer.transform(source, result);
        } catch (TransformerConfigurationException e) {
            e.printStackTrace();
        } catch (TransformerException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //添加
    public void add(){
        Element element=document.createElement("Brand");
        element.setAttribute("name", "三星");
        Element ele1=document.createElement("Type");
        ele1.setAttribute("name", "Note3");
        element.appendChild(ele1);
        document.getElementsByTagName("PhoneInfo").item(0).appendChild(element);
        this.savaXML("new.xml");
    }

    //修改
    public void update(){
        NodeList brands=document.getElementsByTagName("Brand");
        for(int i=0;i<brands.getLength();i++){
            Node brand=brands.item(i);
            Element eleBrand=(Element)brand;
            eleBrand.setAttribute("id", i+"");
        }
        this.savaXML("new.xml");
    }

    //删除
    public void delete(){
        NodeList brands=document.getElementsByTagName("Brand");
        for(int i=0;i<brands.getLength();i++){
            Node brand=brands.item(i);
            Element eleBrand=(Element)brand;
            if(eleBrand.getAttribute("name").equals("华为")){
                eleBrand.getParentNode().removeChild(eleBrand);
            }
        }
        this.savaXML("new.xml");
    }
}

下面是news.xml

<?xml version="1.0" encoding="GB2312" standalone="no"?>
<PhoneInfo>

    <Brand name="苹果">
        <Type name="iPhone4"/>
    </Brand>
</PhoneInfo>

下面是收藏信息.xml

<?xml version="1.0" encoding="GB2312"?>
<PhoneInfo>
    <Brand name="华为">
        <Type name="U8650"/>
        <Type name="HW123"/>
        <Type name="HW321"/>
    </Brand>
    <Brand name="苹果">
        <Type name="iPhone4"/>
    </Brand>
</PhoneInfo>
时间: 2024-10-08 09:47:40

49.将手机收藏信息保存到文件中的相关文章

jmeter 发送http请求,并把获取到的请求的订单信息保存到文件中

有一个任务,需要频繁发送订单请求,并分析订单请求中有没有存在重复订单号,思路是用jmeter 发送http请求,使用正则表达式获取到订单号,并把订单号和线程号作为参数提供给java请求,在java请求中把订单号写到包括有线程号的命名文件中.完成出来的样子是这样的 步骤如下: 1.Jmeter 发送http请求 1) 新建HTTP信息头管理器 2) 新建HTTP请求 2,在下单过后返回部分信息如下:"msg":"下单成功","result":&qu

linux kernel将关键信息保存到文件做法 很好的调试方法

linux kernel将关键信息保存到文件做法      很好的调试方法 下面有2个示例: 1:保存机器从开机到结束的VBATT: 2:保存uart接收到的数据到文件: 意义不多说了. 以下是代码: #include <linux/fs.h> #include <asm/uaccess.h> #include <asm/unaligned.h> static struct file *fp =NULL; int write_to_file (char *buf, in

谷歌浏览器修改CSS和js后同步保存到文件中 (译)

谷歌浏览器修改CSS和js后同步保存到文件中. 英文原文:http://www.stephensaw.me/google-chrome-devtools-source-maps/ 谷歌的Chrome DevTools源地图 谷歌的Chrome DevTools发展得越来越好,尤其是他们快速的Blink and V8的性能 ,而且他们使DevTools更好. 最近我发现,编辑源代码的正确的方式是使用源映射了Chrome DevTools. Source Maps 要验证源地图的开启,转至DevTo

使用DOM维护手机收藏信息

public class XMLParse3 { // 1.创建解析器工厂 DocumentBuilerFactory // 2.创建解析器 (由解析工厂创建) 即为DocumentBuilder对象 // 3.由解析器对象指定XML文件进行解析, 构造DOM树,创建Document对象 // 4. 以Document对象对DOM树节点的操作, 比如 增删改查 Document doc = null; public void getDocument() { DocumentBuilderFact

将内容输入到文本中、读取文件、将输出结果保存到文件中、计算程序跑的时间(c++)

将数据输出到文件中 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<vector> #include<map> #include<cstdlib> #include<fstream> #include<time.h> using names

将屏幕内容保存到文件中

[email protected]>spool aa.txt; //将内容保存到aa.txt文件中去 [email protected]>select * from tab; TNAME TABTYPE CLUSTERID ------------------------------------------------------------ -------------- ---------- BONUS TABLE D TABLE DEPT TABLE E TABLE EMP TABLE S

python练习题1优化:用户信息保存到文件

需求: 控制台根据用户选择实现: 1.添加用户(个别信息必填)add user 2.展示用户列表 list user 3.根据名字搜索用户信息 search user 4.根据名字修改用户信息 modify user 5.退出 exit def add_user(): filename=raw_input("你想保存到的文件名称为:") fo=open(filename,"a") print "请输入保存信息内容:" choise="y

长时间ping一个地址,并将结果按时间保存到文件中

:top echo %time% >> c:/1.txt               //将时间输出到文件1.txt中 ping -n 20 www.baidu.com >> C:/1.txt  //连续ping 20次,将结果输出到文件1.txt中 goto top                              //到top去循环执行

数组形式保存到文件中

/** * 写入缓存 * @param string $name 缓存名称 * @param mixed $data 缓存数据 * @param array $setting 缓存配置 * @param string $type 缓存类型 * @param string $module 所属模型 * @return mixed 缓存路径/false */ public function set($name, $data, $setting = '', $type = 'data', $modul