为了账号安全,请及时绑定邮箱和手机立即绑定

Java眼中的XML---文件读取

难度初级
时长 3小时 0分
学习人数
综合评分9.63
323人评价 查看评价
9.9 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • DOM 方式解析 XML DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); // 通过DocumentBuilder对象的parse方法加载books.xml文件到当前项目下 Document document = db.parse("books.xml"); // 通过标签名获取节点集合, 获取所有book节点的集合 NodeList bookList = document.getElementsByTagName("book"); // 遍历每一个book节点 for(int i = 0; i < bookList.getLength(); i ++){ // 通过 item(i) 方法 获取 一个book节点,nodeList的索引值从 0 开始 Node book = bookList.item(i); // 获取 book 节点的所有属性的集合 NameNodeMap attrs = book.getAttributes(); // 遍历 book 的属性 for(int j = 0; j < attrs.getLength(); j ++){ // 通过 item(index) 方法获取 book 节点的某一属性 Node attr = attrs.item(j).getNodeName(); // 获得属性名称 System.out.print("属性名:" + attr.getNodeName()); System.out.println("---属性值:" + attr.getNodeValue()); } }
    查看全部
  • /** * DOM解析xml文件步骤: * 1.创建DocumentBuilderFactory对象dbf * 2.借助dbf.newDocumentBuilder()返回DocumentBuilder对象 db * 3.利用db.parse("books.xml")返回Document对象document * 4.document.getElementsByTagName()返回NodeList对象bookList * 5.Node book=bookList.item(i)获取bookList中的第i+1个节点 * 6.NamedNodeMap attrs=book.getAttributes()获取每本书的属性集合 * 7.Node attr=attrs.item(j)获取第j+1个属性 * 8.attr.getNodeName()获取属性名称,attr.getNodeValue()获取属性值 边读取时边用对象储存 */
    查看全部
  • Element是节点<> Attr是节点属性 Text是文本 例如:换行空格
    查看全部
  • DOM下解析xml文件节点的属性: org-w3c-dom 一、未知节点属性的个数和属性名时: 1、Document类的.getElementsByTagName(标签名)方法,可通过标签名返回节点的集合(返回NodeList类型) (对于NodeList,得到的是具有相同标签名的节点的集合List,需要用for遍历。) 2、NodeList类的.getLength() 可返回集合的长度。 3、NodeList类的.item(int index) 可访问集合中下标为index的节点(index从0开始),(返回Node类型)。 4、Node类的.getAttributes() 返回节点Node的所有属性的集合(返回NamedNodeMap类型)。 5、NamedNodeMap类的.getLength() 可返回节点具有的属性的数目。 6、NamedNodeMap类的.item(int index) 可获取节点下索引值为index的属性,返回Node类型。 7、NamedNodeMap类的.getNodeName()可返回该属性的名称,通过.getNodeValue()返回属性值。 二、已知节点的属性只有一个,且属性名已知 1、Document类的.getElementsByTagName(标签名)方法,可通过标签名返回节点的集合(返回NodeList类型) 2、NodeList类的.getLength() 可返回集合的长度。 3、NodeList类的.item(int index)强制类型转换为Element类型。 4、Element类的.getAttribute(属性名) 可得到属性的值。(返回String类型)
    查看全部
  • xml格式个人小结 <node attr="attrVal"...>textVal <child>...</child>textVal ... </node> 1.<>与</>之间的部分组成一个element节点 2.<>中第一个字符串为节点的名字;其后的每个字符串以表达式的形式组成一个attr键值对 3.<>之后或者子节点的</>之后有一个text节点 4.每个子节点是element节点,格式和这个相同 5.element存储这个节点的名称,所有element和text子节点的list(两种类型按照文件顺序共存在一个list),所有attr键值对(此处老师用节点来说明并不合适)的map 6.attr键值对,含有键(名称)和值 7.text节点仅含有节点内容 8.仅有element可以含有element或者text类型子节点和attr键值对表示的属性 Ps.以上为个人理解
    查看全部
  • DOM 开始解析前的准备工作 (需要导入jdom包) public static void main(String[] args) { // 进行对books.xml文件的JDOM解析 // 准备工作 // 1.创建一个SAXBuilder的对象 SAXBuilder saxBuilder = new SAXBuilder(); InputStream in; try { // 2.创建一个输入流,将xml文件加载到输入流中 in = new FileInputStream("src/res/books.xml");//放在包下可以直接用“/”来分隔 // 3.通过saxBuilder的build方法,将输入流加载到saxBuilder中 Document document=saxBuilder.build(in); // 4.通过document对象获取xml文件的根节点 Element rootElement = document.getRootElement(); // 5.获取根节点下的子节点的List集合 List<Element> bookList = rootElement.getChildren();
    查看全部
  • 解析xml元素(重写startElement()方法) 1. 调用DefaultHanlder 的startElement()方法 super.startElement(uri,localName,qName,attributes); 2. 开始解析book元素属性 if(qname.equals("book")){ //已知节点的属性名时 String value = attributes.getValue("id"); System.out.print("属性值:"+value); //未知节点的属性名时,获取属性名和属性值 for(int i=0;i<attributes.getLength();i++){ System.out.print(attributes.getQname(i)+attributes.getValue(i)); } }
    查看全部
  • NodeList childNodes = book.getChildNodes();<br> 获取book下子节点内容的两种方式:<br> 1)childNodes.item(index).getFirstChild().getNodeValue();<br> 2)childNodes.item(index).getTextContent();<br> 第一种方式在其下面还有子节点时,会因为是Element节点所以默认的getNodeValue()返回值是null;<br> 第二章方式在其下面还有子节点时,会将子节点内容与当前节点内容一起获取。 注:在获取当前节点的子节点时,当前节点下的空格与回车符会被当做Text类型的子节点获取(#Test)。
    查看全部
  • 08:15 characters(char[] ch, int start, int length) 方法总结: 简单来说解析器首先在startDocument之后会读取XML中的字符串(从根节点开始一直到根节点结束)并放入ch[]字符数组中去,然后在解析到#TEXT节点(包括空格和换行符)时使用start来标记字符在ch[]数组中的起始位置,length标记长度,然后调用character方法,character方法默认不会进行任何处理,想进行处理需要重写方法。 PS:好像ch[]是保存在存储块中,而存储块是有大小的,所以有可能发生同一个#TEXT 字符存储在不同的两个存储块中,这种情况会先完成一个存储块中的start,length标记和character调用,然后再在另一个存储块中完成剩余部分的start,length标记和character调用。这种情况下在character方法中使用toString两次调用分别只得到了#TEXT字符串的一部分,为了可以对一个Element中完整的#TEXT字符串进行操作,一般我们会选择建一个StringBuilder对象,在character方法中将读取到的字符串添加到StringBuilder对象中去,然后再endElement中对字符串进行处理并在endElement最后对StringBuilder进行clear。 另外,在解析XML中最后一个#TEXT节点时会把ch[]变为最后一个#TEXT的字节数组。
    查看全部
  • 导入XML文件 导入Jar包 ---------------------------------------DOM4J解析节点属性--------------------------------------- //创建SAXReader的对象reader SAXReader reader = new SAXReader(); //通过reader的read加载person.xml文件 Document document = reader.read(new File("person.xml")); //通过document对象获取根节点persons Element persons = document.getRootElement(); //通过element对象的elementIterator方法获取迭代器 Iterator it = persons.getIterator(); //遍历迭代器,获取根节点中的信息(persons)适用于我们不知道节点的名称时 while(it.hasNext()){ Element person = (Element)it.next(); //获取person的属性名和属性值 List<Attribute> personAttrs = person.attributes(); //由于是List类型所以我们使用for each()循环进行遍历 for(Attribute attr : personAttrs){ System.out.println("节点名:" + attr.getName() + "--节点值:" + attr.getValue()); } } ---------------------------注意代码中import时导入的是dom4j下的--------------------------------
    查看全部
  • 1.获取一个SAXParserFactory对象 SAXParserFactory factory = SAXParserFactory.newInstance(); 2.获取一个SAXParser对象 SAXParser parser = factory.newSAXParser(); 3.创建一个类SAXParserHandler extends DefaultHandler; 4.重写SAXParserHandler类中startDocument()和endDocument() startElement()、characters()和endElement() 5.创建SAXParserHandler对象 SAXParserHandler handler = new SAXParserHandler() 6.调用parse(url,handler实例)方法 parser.parse("book.xml",handler);
    查看全部
  • 获取xml文件内容的四种解析方式:DOM SAX DOM4J JDOM DOM、SAX :java 官方方式,不需要下载jar包 DOM4J、JDOM :第三方,需要网上下载jar包 DOM使用步骤: 准备工作 //创建一个DocumentBuilderFactory的对象 DocumentBuilderFactory dbf = DocumnetBuilderFactory.newInstance(); //创建一个DocumentBuilder的对象 DocumentBuilder db = dbf.newDocumentBuilder(); //通过DocumentBuilder对象的parse方法加载xml文件到当前项目,注:import org.w3c.dom.Document; Document document = db.parse("*.xml");
    查看全部
  • DOM:全部读取先 SAX解析:通过handler处理类逐个分析每个节点,从外到内逐个解析。。一个一个来 startElement, endElement(开始标签解析,结束标签解析) 步骤: 1.通过SAXParserFactory的静态newInstance()方法获取SAXParserFactory实例factory SAXParserFactory factory = SAXParserFactory.newInstance(); 2.通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser SAXParser parser = factory.newSAXParser(); parser.parse("路径",handler类型对象);(需创建见3) 3.创建一个类继承DefaultHandler,重写其中一些方法进行业务处理并创建这个类的实例handler 创建一个package继承DefaultHandler(。com那个) startElement() 用于遍历xml的开始标签 endElement() 遍历xml结束标签 startElement 解析开始 endElement 解析结束 SAX解析xml步骤 1.通过SAXParseFactory的静态newInstance()方法获取SAXParserFactory实例factory 2.通过SAXParserFactory实例的newSAXParser()方法返回SAXParser实例parser 3.创建一个类继承DefaultHandle,重写方发进行业务已处理创建这个类的实例handle
    查看全部
  • ---------------------------------------DOM4J解析节点属性--------------------------------------- //创建SAXReader的对象reader SAXReader reader = new SAXReader(); //通过reader的read加载person.xml文件 Document document = reader.read(new File("person.xml")); //通过document对象获取根节点persons Element persons = document.getRootElement(); //通过element对象的elementIterator方法获取迭代器 Iterator it = persons.getIterator(); //遍历迭代器,获取根节点中的信息(persons)适用于我们不知道节点的名称时 while(it.hasNext()){ Element person = (Element)it.next(); //获取person的属性名和属性值 List<Attribute> personAttrs = person.attributes(); //由于是List类型所以我们使用for each()循环进行遍历 for(Attribute attr : personAttrs){ System.out.println("节点名:" + attr.getName() + "--节点值:" + attr.getValue()); } } ---------------------------注意代码中import时导入的是dom4j下的--------------------------------
    查看全部
  • ---------------------------------在JDOM中存储Person对象--------------------------------- Person personEntity = new Person(); if(attrName.equals("id")){ personEntity.setId(attrValue); } if(child.getName().equals("name")){ personEntity.setName(child.getValue()); }else if(child.getName().equals("sex")){ personEntity.setSex(child.getValue()); }else if{ ... } private static ArrayList<Person> arrayList = new ArrayList(); arrayList.add(personEntity); //将personEntity设置为空,让垃圾回收机制回收 personEntity = null;
    查看全部

举报

0/150
提交
取消
课程须知
本课程是 Java 的中级课程,需要各位小伙伴们熟悉 Java 面向对象的思想,并能熟练掌握 Java I/O 的相关知识。对如何将内容写入 XML 文件感兴趣的小伙伴们,可以进入《Java 眼中的 XML --- 文件写入》一探究竟
老师告诉你能学到什么?
1、XML 的基本概念 2、XML 在实际项目开发中的的用途和优点 3、如何通过 Java 解析 XML

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!