Tag: jdom

Java内存不足exception

我在Tomcat中运行Java Web应用程序。 该应用程序使用Quartz框架定期调度cron作业。 这个cron工作涉及解析4+ MB xml文件,我正在使用JDOM API。 xml文件包含大约3600个要解析的节点,因此要在DB中更新数据,我按顺序执行此操作。 在解析了几乎一半的文件后,我的应用程序抛出了内存不足exception。 堆栈跟踪是: Exception in thread “ContainerBackgroundProcessor[StandardEngine[Catalina]]” java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3210) at java.lang.String.(String.java:216) at java.lang.StringBuffer.toString(StringBuffer.java:585) at org.netbeans.lib.profiler.server.ProfilerRuntimeMemory.traceVMObjectAlloc(ProfilerRuntimeMemory.java:170) at java.lang.Throwable.getStackTraceElement(Native Method) at java.lang.Throwable.getOurStackTrace(Throwable.java:590) at java.lang.Throwable.getStackTrace(Throwable.java:582) at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:155) at org.apache.juli.logging.DirectJDKLog.error(DirectJDKLog.java:135) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1603) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610) at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590) at java.lang.Thread.run(Thread.java:619) Exception in thread “*** JFluid Monitor thread ***” java.lang.OutOfMemoryError: Java […]

如何从JDOM获取节点内容

我正在使用import org.jdom在java中编写应用程序。*; 我的XML有效,但有时它包含HTML标记。 例如,像这样: Anatomy & Physiology For more info click here Learn more about the human body. Choose from a variety of Physiology (A&P) designed for complementary therapies.  Online studies options are available. Health & Human Services 所以我的问题是overview.content节点内的 标签。 我希望这段代码能够正常工作: Element overview = sds.getChild(“overview”); Element content = overview.getChild(“content”); System.out.println(content.getText()); 但它返回空白。 如何从overview.content节点返回所有文本(嵌套标签和所有文本)? 谢谢

ClassCastException:org.apache.xerces.parsers.XIncludeAwareParserConfiguration无法强制转换为org.apache.xerces.xni.parser.XMLParserConfiguration

我正在Eclipse中开发一个GWT应用程序并使用jdom2来读取一些自定义的xml属性文件。 在最近的更新之后,我的应用程序现在在尝试读取xml文件时失败并出现上述错误。 相关的堆栈跟踪是: org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration org.apache.xerces.parsers.SAXParser.(Unknown Source) org.apache.xerces.parsers.SAXParser.(Unknown Source) org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.(Unknown Source) org.apache.xerces.jaxp.SAXParserImpl.(Unknown Source) org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source) org.jdom2.input.sax.XMLReaders.createXMLReader(XMLReaders.java:165) org.jdom2.input.SAXBuilder.createParser(SAXBuilder.java:871) org.jdom2.input.SAXBuilder.buildEngine(SAXBuilder.java:854) org.jdom2.input.SAXBuilder.getEngine(SAXBuilder.java:904) org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1116) uk.co.platosys.db.jdbc.DatabaseProperties.loadProperties(DatabaseProperties.java:78) 研究此问题表明,当类路径上存在不兼容的xerces jar版本时,可能会出现错误。 gwt-dev-2.6.1.jar包含xerces包,我的预感是这个最新版本的gwt-dev捆绑了一个不兼容的版本。 然而,当前版本的jdom2.0.5与2.11版本的Xerces一起发布,这似乎是Apache最新发布的版本。 将这些jar放在我的类路径上似乎并不能解决问题; 我以前能够依赖gwt-dev中的版本。 我宁愿在这方面做到这一点,而且远远超出了我的舒适区。

xpath 2.0 for java possible

我应该为XPath使用什么包? 我想要查询元素,然后在这些节点周围提取一些值。 也许一个或多个级别更高,一些属性。 javax.xml.xpath是XPath 1.0。 javax.xml.xpath和org.w3c.dom是正确的方法,还是有更现代的实现? org.w3c.dom很尴尬,JDOM看起来很简单。

通过Java中的XSLT进行XML碎化

我需要转换具有表单嵌套(分层)结构的大型XML文件 Flat XML Hierarchical XML (multiple blocks, some repetitive) Flat XML 变为扁平(“粉碎”)forms,每个重复嵌套块有1个块。 数据具有许多不同的标签和层次结构变体(特别是在分层XML之前和之后的碎片XML的标签数量),因此理想情况下不应该对标签和属性名称或层次级别做出假设。 只有4个级别的层次结构的顶级视图看起来像 … … … A B … … … 然后会得到所需的输出 … … … A … … … … … … B … … … 也就是说,如果在每个级别i存在Li不同的组件,则将产生总共Product(Li)不同组件(仅上述2,因为唯一的区分因素是级别4,因此L1*L2*L3*L4 = 2 )。 从我所看到的,XSLT可能是要走的路,但任何其他解决方案(例如,StAX甚至JDOM)都可以。 使用虚构信息的更详细的例子将是 123 A Street 28 List of previous jobs in the US 3 […]

默认XML命名空间,JDOM和XPath

我想使用JDOM读取XML文件,然后使用XPath从JDOM文档中提取数据。 它创建了Document对象,但是当我使用XPath查询Document的元素列表时,我什么也得不到。 我的XML文档在根元素中定义了一个默认命名空间。 有趣的是,当我删除默认命名空间时,它成功运行XPath查询并返回我想要的元素。 还有什么办法让我的XPath查询返回结果? XML: Lord of the Rings: The Fellowship of the Ring 178 Ian Holm Elijah Wood Ian McKellen The Matrix 136 Keanu Reeves Laurence Fishburne Java的: public static void main(String args[]) throws Exception { SAXBuilder builder = new SAXBuilder(); Document d = builder.build(“xpath.xml”); XPath xpath = XPath.newInstance(“collection/dvd”); xpath.addNamespace(d.getRootElement().getNamespace()); System.out.println(xpath.selectNodes(d)); }