![]() | 1 Livid MOD PRO 没有提供分页参数么? |
![]() | 3 yorkw 2014-07-21 15:47:13 +08:00 ![]() |
![]() | 4 tabris17 2014-07-21 15:50:21 +08:00 自己写一个XMLParser |
![]() | 5 keithellis 2014-07-21 16:03:45 +08:00 ![]() SAX parser |
6 feiyuanqiu 2014-07-21 16:08:31 +08:00 ![]() PHP的话,可以用XMLReader这个扩展,它是按照文件流的方式每次按照节点来读取,读完一个节点再读下一个,不会把文件整个载入内存,php5.1以上都是自带了的,直接可以用。 |
![]() | 7 andybest OP @keithellis SAX (Simple API for XML) parser 不是在初始化的时候一次将XML全部装入内存的吗?如何能解决这个问题呢? |
![]() | 10 keithellis 2014-07-21 16:26:13 +08:00 ![]() |
![]() | 11 bigredapple 2014-07-21 16:28:39 +08:00 ![]() SAX |
![]() | 12 andybest OP @keithellis Very useful !收藏了,十分感谢! |
13 kaneg 2014-07-21 16:32:08 +08:00 ![]() 如果你使用Java,基于事件的流式处理方式应该更适合你。示例代码: try { URL url = new URL("http://www.meituan.com/api/v2/beijing/deals"); URLConnection cOnnection= url.openConnection(); connection.setConnectTimeout(5000); connection.setReadTimeout(60000); InputStream is = connection.getInputStream(); try { XMLInputFactory factory = XMLInputFactory.newInstance(); XMLEventReader xmlEventReader = factory.createXMLEventReader(new BufferedInputStream(is)); while (xmlEventReader.hasNext()) { XMLEvent xmlEvent = xmlEventReader.nextEvent(); if (xmlEvent.isStartElement()) { StartElement startElement = xmlEvent.asStartElement(); System.out.println(startElement.getName().getLocalPart()); } } } catch (Exception e) { System.err.println(e.getMessage()); } } catch (IOException e) { System.err.println(e.getMessage()); } |
14 xujialiang 2014-07-21 16:46:29 +08:00 IOS中,document方式会一次把xml全部读进内存的。 |
![]() | 15 Zhang 2014-07-21 16:52:25 +08:00 加载完了,浏览器耗了4.42GB内存 |
17 fanghui 2014-07-21 17:17:07 +08:00 笨方法:下载--保存文件--分文件--解析文件--- |
20 ChiChou 2014-07-21 17:48:04 +08:00 pull 比较适合这个场景。 |
![]() | 22 yangxiongwei 2014-07-21 19:29:02 +08:00 ![]() SAX ,事件驱动。当解析器发现元素开始、元素结束、文本、文档的开始或结束等时,发送事件,程序员编写响应这些事件的代码,保存数据。优点:不用事先调入整个文档,占用资源少;SAX解析器代码比DOM解析器代码小,适于Applet,下载。缺点:不是持久的;事件过后,若没保存数据,那么数据就丢了;无状态性;从事件中只能得到文本,但不知该文本属于哪个元素;使用场合:Applet;只需XML文档的少量内容,很少回头访问;机器内存少; |
![]() | 24 yangxiongwei 2014-07-21 21:54:38 +08:00 |
![]() | 26 arslion 2014-07-22 10:16:34 +08:00 只读的话用SAX呗~~ |