-
基础方法:DOM(平台无关的官方解析方式)、SAX(基于事件驱动的解析方式) 扩展方法:JDOM、DOM4J(在基础的方法上扩展出的,只有在java中能够使用的解析方法) DOM:一次性将整个xml文件加载到内存中,形成DOM树 优点:形成了树结构,直观好理解,代码更容易编写 解析过程中树结构保留在内存中,方便修改 缺点:当xml文件较大时,对内存消耗比较大,容易影响解析性能并造成内存溢出 SAX:逐条语句判断解析 优点:采用事件驱动模式,对内存消耗比较小 适用于只需要处理xml中数据时 缺点:不易编码 很难同时访问同一个xml中的多处不同数据 JDOM:仅使用具体类而不使用接口 API大量使用了Collections类 DOM4J:JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能 DOM4J使用接口和抽象基本类方法,是一个优秀的Java XML API 具有性能优异、灵活性好、功能强大和极端易使用的特点 是一个开放源代码的软件查看全部
-
1.解析子节点,book标签之间的所有内容都看成是子节点<br> NodeList childNodes=book.getChildNodes()<br> 2.通过childNodes的getLength()方法返回节点的个数(空格与换行字符看成为一个文本节点,标签与结束标签看成一个元素节点)<br> 3.通过NodeList的item()获取子节点属性,再用Node类型的getNodeName()方法就可以获取节点名<br> Node childnode=childNodes.item(i);<br> String name=childnode.getNodeName();<br> 通过Node类的getNodeType()来区分text类型的node以及elment类型的node<br> if(childnode.getNodeType==Node.ELEMENT_NODE)<br> {System.out.println(name)}<br> 4.不能直接通过Node的getNodeValue()来获取节点的值,因为元素节点的nodeValue的返回值为null而且标签之间的文本被看做是该标签的子节点.所以要用Node的getFirstChild()此时获取的子节点属性,再getNodeValue()获取该值<br> 或者用getTextContent()方法获取节点值。<br> 5.getFirstChild()与getTextContent()区别<br> 如果该节点还存在其他子节点并且有节点值<name><a>aa</a>老人与海</name>,那么用getFirstChild().getNodeValue()一样是null,因为得到的是<a></a>,<a>是element元素,element元素的getNodeValue()返回的是空类型 如果用Node的getTextContent(),获取name下的节点值以及a下的节点值。 结果:aa老人与海查看全部
-
在不知道节点属性的个数和属性名时: 1、通过document.getElementByTagName("标签名")获得所有标签名的节点,得到一个NodeList集合 2、通过NodeList.getLength()获得集合长度,遍历集合 3、Node node = NodeList.item(index)获得里面的节点 4、通过NamedNodeMap attrs = node.getAttributes()获取所有属性集合 5、通过attrs.getLength()遍历集合,Node attr = atrrs.item(index) 6、attr.getNodeName()获得属性名,attr.getNodeValue()获取属性值 前提已经知道book节点有且只有1个id属性,将book节点进行强制类型转换,转换成element类型。 1、通过document.getElementByTagName("标签名")获得所有标签名的节点,得到一个NodeList集合 2、通过NodeList.getLength()获得集合长度,遍历集合 3、element book=(element)bookList.item(i);//强制转换为element类型 4、String attrValue = book.getAttribute("id");查看全部
-
解析子节点的信息 Iterator itt = book.elementIterator(); while(itt.hasNext()){ Element bookchild = (Element)itt.next(); bookchild.getName(); bookchild.getStringValue(); }查看全部
-
DOM4J 解析 xml 文件 1、创建一个 SAXReader 对象 SAXReader saxReader = new SAXReader(); 2、通过SAXReader对象的read方法加载books.xml文件,获取docuemnt对象 Document document = saxReader.read(fileName); 3、通过 getRootElement() 获取根节点bookstore Element bookstore = document.getRootElement(); 4、通过 elementIterator() 获取book的迭代器 Iterator it = bookstore.elementIterator(); 5、遍历迭代器,获取根节点中的信息(书籍) while(it.hasNext()){ //获取子节点的元素 Element book = (Element)it.next();} 6、获取属性节点类似 JDOM 解析 List<Attribute> attrs = book.attributes(); 7、遍历,获取属性节点名、值 book.getName() book.geValue() 8、获取book子节点的迭代器 Iterator itt = book.elementIterator(); 8、遍历,获取元素节点名、值 book.getName() book.getStringValue()/book.getText()查看全部
-
关于 JDOM 使用过程中 JAR 包的引用 操作: 1.项目根目录下新建lib文件夹 2.复制、粘帖包 3.右击包选择“构建路径” 4.“添加至构建路径”查看全部
-
在JDOM中存储对象 1.创建一个新的book类并将其实例化 Book bookEntity = new Book(); 2.添加节点属性值到book if(attrName.equals("id")){ personEntity.setId(attrValue); } 3.添加子节点属性值到book if (child.getName().equals("name")) { bookEntity.setName(child.getValue()); } else if (child.getName().equals("author")) { bookEntity.setAuthor(child.getValue()); } else if (child.getName().equals("year")) { bookEntity.setYear(child.getValue()); } else if (child.getName().equals("price")) { bookEntity.setPrice(child.getValue()); } else if (child.getName().equals("language")) { bookEntity.setLanguage(child.getValue()); }查看全部
-
JDOM 解析时乱码的处理 两种方法可以解决乱码问题: 1.修改xml第一行的encoding属性 2.在代码中处理,应用IO流知识 //创建输入流,将XML文件加载到输入流中 InputStream in = new FileInputStream("src/book.xml"); //使用包装流InputStreamReader进行读取编码的指定 InputStreamReader isr = new InputStreamReader(in,"UTF-8");查看全部
-
// 对book节点的子节点的节点名以及节点值的遍历 List<Element> bookChilds = book.getChildren(); for (Element child : bookChilds) { System.out.println("节点名:" + child.getName() + "----节点值:" + child.getValue()); } DOM 解析 获取节点名、值:getNodeName() getNodeValue() getTextContent() 获取子节点:getChildNodes() 返回 NodeList 获取属性节点:getAttributes() 返回 NamedNodeMap JDOM 解析 获取节点名、值:getName() getValue() 获取子节点:getChildren() 返回 List<Element> 获取属性节点:getAttributes() 返回 List<Attribute>查看全部
-
获取xml文件内容的四种解析方式:DOM SAX DOM4J JDOM DOM、SAX :java 官方方式,不需要下载jar包 DOM4J、JDOM :第三方,需要网上下载jar包 DOM使用步骤: 准备工作 //创建一个DocumentBuilderFactory的对象 DocumentBuilderFactory dbf = DocumnetBuilderFactory.instance(); //创建一个DocumentBuilder的对象 DocumentBuilder db = dbf.newDocumentBuilder(); //通过DocumentBuilder对象的parse方法加载xml文件到当前项目,注:import org.w3c.dom.Document; Document document = db.parse("*.xml");查看全部
-
1.xml(Extensible Markup Language)可扩展标记语言的主要作用: 1)主要是实习不同功能直接的连接(比如订票与 支付) 2)不同系统之间的连接 3)数据共享 2.一种定义文档格式的语言 语法结构: 1)declaration(声明) <? ?> <? xml version="1.0" encoding="UTF-8"?> 2)Tag(标记)<></> <username> 内容</username> 3)Attribute(属性) <username sex="male"></username> sex="male"即为属性 也可以把属性改为子元素 <username> 张三 <sex>male</sex> </username> 4)注释 <!-- --> eg:<!--这是一个注释的例子-->查看全部
-
// 遍历解析bookList集合 for (Element book : bookList) { System.out.println("======开始解析第" + (bookList.indexOf(book) + 1) + "书======"); // 解析book的属性集合 List<Attribute> attrList = book.getAttributes(); // //知道节点下属性名称时,获取节点值 // book.getAttributeValue("id"); // 遍历attrList(针对不清楚book节点下属性的名字及数量) for (Attribute attr : attrList) { // 获取属性名 String attrName = attr.getName(); // 获取属性值 String attrValue = attr.getValue(); System.out.println("属性名:" + attrName + "----属性值:" + attrValue); if (attrName.equals("id")) { bookEntity.setId(attrValue); } }查看全部
-
JDOM是第三方提供的解析XML方法,需要jdom-2.0.5.jar包 步骤: 1、创建SAXBuilder对象 SAXBuilder saxBuilder = new SAXBuilder(); 2、创建一个输入流将XML加载到输入流中 InputStream in = new FileInputStream("books.xml"); 3、通过saxBuilder的build()将输入流加载到saxBuilder中 Document document = saxBuilder.build(in); 4、根据document的getRootElement()获取xml中的根节点 Element rootElement = document.getRootElement(); 5、获取根节点下的子节点的List集合 List<Element> bookList = rootElement.getChildren(); PS:Alt+向上---代码上移,Alt+向下---代码下移;查看全部
-
需重看 程序有BUG查看全部
-
java中解析xml的四种方式查看全部
举报
0/150
提交
取消