-
DOM解析文件: NodeList bookList = document.getElementsByTagName("book");获取节点book,返回NodeList类型,装节点的list Node book = bookList.item(index);获取book节点; NameNodeMap attrs = book.getAttributes();获取book节点的所有属性 Node attr = attrs.item(index);(获取某个属性) attr.getNodeName();(获取属性名) attr.getNodeValue();(获取属性值) 另外 Element也可。先强制类型转换成Element再调用.getAttribute("id");(前提是已经知道book节点有且只有一个id属性)查看全部
-
1.基础方法 DOM (与平台无关的官方解析); SAX (基于事件驱动的解析) 2.扩展方法 (在基础方法上扩展的,只有在 java 中才能够使用的解析方法) JDOM 、 DOM4J 3.DOM:一次性加载形成DOM树;对内存性能要求较高 -优点:形成了树结构,直观好理解,代码更容易编写;解析过程中树结构保留在内存中,方便修改; -缺点:当xml文件较大时,对内存消耗比较大,容易影响解析性能并造成内存溢出 4.SAX:事件驱动,对内存耗费较小;只关注数据 -优点:适用于只需要处理xml中数据; -缺点:不易编码;很难同时访问同一个xml中的多处不同数据 5.JDOM与DOM、DOM4J *JDOM: -仅使用具体类而不使用接口 -API大量使用了Collections类 *DOM4J -JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能; -DOM4J使用接口和抽象基本类方法,是一个优秀的Java XML API; -具有性能优异、灵活性好、功能强大和极端易用使用的特点 -是一个开放源代码的软件查看全部
-
/* * 如何获取book子节点,qName.equals("name")时,向book对象中setName,获取文本是在characters方法中的 * 将qName 和 Book对象做成全局变量, 便于传值和共用,这样便能够获取到book子节点的值 * 存储book对象的值,xml的SAX解析并将解析的内容及xml结构形式保存至Java对象中。 ArrayList保存对象 ArrayList<Book> BookList=new ArrayList<Book>(); BookList.add(book);book=null;后继续遍历 * */查看全部
-
SAXReader reader = new SAXReader(); //read方法加載xml Document doc = reader.read(new file("src/res/book.xml")); Element bookStore = doc.getRootElement(); Iterator it = bookStore.elementIterator(); ArrayList bookList = new ArrayList(); while (it.hasNext()) { Book bookset = new Book(); Element book = (Element)it.next(); List<Attribute> bookAttrs= book.attributes(); for (Attribute attr : bookAttrs) { if (attr.getName.equals("id")){ bookSetId(attr.getValue) } } Iterator itBook = book.elementIterator(); while (itbook.hasNext()){ Element bookChild = (Element) itBook.next(); if(bookChild.getName().equals("name")){bookSet.SetName(bookChild.getStringValue())}; if(bookChild.getName().equals("author")){bookSet.SetAuthor(bookChild.getStringValue())}; ...... } bookList.add(bookSet); bookSet=null; }查看全部
-
SAXReader reader = new SAXReader(); //read方法加載xml Document doc = reader.read(new file("src/res/book.xml")); Element bookStore = doc.getRootElement(); Iterator it = bookStore.elementIterator(); while (it.hasNext()) { Element book = (Element)it.next(); List<Attribute> bookAttrs= book.attributes(); for (Attribute attr : bookAttrs) { String name = attr.getName; String value = attr.getValue; } }查看全部
-
1.創建Book類 2.外層for循環,每次循環創建一個Book對象。 Book bookSet = new Book(); 獲取屬性 if (attrName.equals("id") {bookSet.setId(attrValue);} 3.Book的子節點的節點名與屬性 if (booknodes.getName.equals("name")) {bookSet.SetName(booknodes.getValue);} else if (booknodes.getName.equals("author")) {bookSet.SetAuthor(booknodes.getValue);} ... 4.將得到嘅Book對象bookSet存入List入邊 在方法外,類內定義,private static ArrayList<Book> booksList = new ArrayList<Book>(); 在外層for循環結束處,booksList.add(bookSet);bookSet = null;查看全部
-
如果修改XML的编码不好使,则只能在不改变XML文件的基础下,修改我们的JDOM代码 //创建输入流,将XML文件加载到输入流中 InputStream in = new FileInputStream("src/person.xml"); //使用包装流InputStreamReader进行读取编码的指定 InputStreamReader isr = new InputStreamReader(in,"UTF-8");查看全部
-
SAXBuilder saxBuilder = new SAXBuilder(); InputStream in = new FileInputStream("books.xml"); Document doc = saxBuilder.build(in); Element rootElement = doc.getRootElement(); List<Element> childList = rootElement.getChildren(); for (Element book : childList) { "第" + childList.index(book)+1 "本書"; List<Attribuate> attrList = childList.getAttribuates();//不知屬性數目及名稱 for (Attribuate attr : attrList){ String attrName = attr.getName; String attrValue = attr.getValue; book.getAttribuateValue(""); } //node and node name節點及節點值 List<Element> nodeList = book.getChildern(); for (Element booknodes : nodeList){ booknodes.getName(); booknodes.getValue(); } } DOM 解析 获取节点名、值:getNodeName() getNodeValue() getTextContent() 获取子节点:getChildNodes() 返回 NodeList 获取属性节点:getAttributes() 返回 NamedNodeMap JDOM 解析 获取节点名、值:getName() getValue() 获取子节点:getChildren() 返回 List<Element> 获取属性节点:getAttributes() 返回 List<Attribute>查看全部
-
SAXBuilder saxBuilder = new SAXBuilder(); InputStream in = new FileInputStream("books.xml"); Document doc = saxBuilder.build(in); Element rootElement = doc.getRootElement(); List<Element> childList = rootElement.getChildren(); for (Element book : childList) { "第" + childList.index(book)+1 "本書"; List<Attribuate> attrList = childList.getAttribuates();//不知屬性數目及名稱 for (Attribuate attr : attrList){ String attrName = attr.getName; String attrValue = attr.getValue; book.getAttribuateValue(""); } }查看全部
-
DOM4J是第三方提供的解析XML方法,需要jdom-2.0.5.jar包(最新) 步骤: 1、创建SAXBuilder对象 SAXBuilder saxBuilder = new SAXBuilder(); 2、创建一个输入流将XML加载到输入流中 InputStream in = new FileInputStream("src/person.xml"); 3、将xml加载到文件输入输入流中 Document document = saxBuilder.build(in); 4、根据Document对象获取xml中的根节点 Element rootElement = document.getRootElement(); 5、获取根节点下的子节点的list集合 List<Element> childList = rootElement.getChildren();查看全部
-
DOM 解析优缺点: 优点:在内存中形成树结构,直观容易理解及代码编写维护 缺点:当 XML 文件比较大时,对内存耗费大,容易影响解析性能并造成内存溢出 SAX 解析优缺点: 优点:采用事件驱动模式,对内存耗费比较小,适用于只需要处理 XML 中的数据 缺点:不容易编码,很难同时访问同一个 XML 中的多处不同数据 JDOM 解析特点 A、仅使用具体类而不使用接口 B、API 大量使用了 Collections 类 DOM4J 解析特点 A、是JDOM 的一种智能分支,合并了许多超出基本 XML 文档表示的功能 B、使用接口和抽象基本类方法,是一个优秀的 Java XML API C、具有性能优异、灵活性好,功能强大和极端易用的特点查看全部
-
1.创建SAXReader的对象reader SAXReader reader = new SAXReader(); 2.通过reader的read加载person.xml文件 Document document = reader.read(new File("person.xml")); 3.通过document对象获取根节点persons Element persons = document.getRootElement(); 4.通过element对象的elementIterator方法获取迭代器 Iterator it = persons.getIterator(); 5.遍历迭代器,获取根节点中的信息(persons)适用于我们不知道节点的名称时 while(it.hasNext()){ Element person = (Element)it.next(); 6.获取person的属性名和属性值 List<Attribute> personAttrs = person.attributes(); 7.由于是List类型所以我们使用for each()循环进行遍历 for(Attribute attr : personAttrs){ System.out.println("节点名:" + attr.getName() + "--节点值:" + attr.getValue()); } } ---------------------------注意代码中import时导入的是dom4j下的--------------------------------查看全部
-
引入jar包的方式 (1)build path (2)新建lib 文件夹,然后把jar包放到lib中(不会随着工程的导入导出而丢失)查看全部
-
JDOM 解析 获取节点名、值:getName() getValue() 获取子节点:getChildren() 返回 List<Element> 获取属性节点:getAttributes() 返回 List<Attribute>查看全部
-
1.创建一个 SAXBuilder 对象 SAXBuilder saxb = new SAXBuilder(); 2.获取document对象 Document document = saxb.build(InputStream); 3.通过document对象获取根节点 Element root = document.getRootElement(); 4.获取根节点下的子节点的List集合 List<Element> bookList = root.getChildren();查看全部
举报
0/150
提交
取消