Tag: xom

XPath表达式不返回//元素,但// *返回计数

我正在使用XOM以及以下示例数据: Element root = cleanDoc.getRootElement(); //find all the bold elements, as those mark institution and clinic. Nodes nodes = root.query(“//*”); Patient Information 以下元素返回许多元素(来自实际数据): //* 但有点像 //head 什么都不返回 如果我遍历根的子节点,数字似乎匹配,如果我打印元素名称,一切看起来都是正确的。 我正在使用HTML,使用tagsoup解析它,然后从结果字符串构建XOM文档。 这部分可能会出现如此可怕的错误? 我觉得这里有一些奇怪的编码问题,但我只是没有看到它。 Java字符串是字符串,对吧?

解析XML时忽略DTD

在使用XOM xml库解析文件时,如何忽略DTD声明。 我的文件有以下行: //rest of stuff here 当我尝试构建()我的文档时,我得到一个DTD文件的文件未发现exception。 我知道我没有这个文件,我不关心它,所以如何在使用XOM时将其删除? 这是一段代码: public BlastXMLParser(String filePath) { Builder b = new Builder(false); //not a good idea to have exception-throwing code in constructor try { _document = b.build(filePath); } catch (ParsingException ex) { Logger.getLogger(BlastXMLParser.class.getName()).log(Level.SEVERE,”err”, ex); } catch (IOException ex) { // } private Elements getBlastReads() { Element root = […]

如何使用XOM流式传输XML数据?

假设我想使用XOM将大量搜索结果(如XML)输出到PrintWriter或OutputStream中。 生成的XML看起来像这样: [child elements and data] … … [1000s of result elements more] 因为生成的XML文档可能很大(可能是几百兆字节),我想以流式方式输出它(而不是在内存中创建整个Document然后编写它)。 一次输出一个的粒度很好,所以我想生成一个又一个 ,并将其写入流中。 换句话说,我只想做类似这样的伪代码(启用自动刷新,所以不要担心): open stream/writer write declaration write start tag for while more results: write next element write end tag for close stream/writer 我一直在看Serializer ,但必要的方法, writeStartTag(Element) , writeEndTag(Element) , write(DocType)都受到保护,而不是公开的! 除了将Serializer子类化为能够使用这些方法,或者将开始和结束标记作为字符串直接手动写入流中,完全绕过XOM之外,没有其他方法吗? (后者在这个简单的例子中不会太糟糕,但在一般情况下会变得非常难看。) 我错过了什么或XOM是不是为此而做的? 使用dom4j,我可以使用XMLWriter轻松完成这项XMLWriter – 它具有带有Writer或OutputStream构造函数,以及writeOpen(Element) , writeClose(Element) , writeDocType(DocumentType)等方法。与XOM的Serializer ,其中唯一的公共write方法是一个拿整个Document […]

在XOM中解析XHTML文档时出现DTD下载错误

我试图解析一个HTML文档与声明的doctype使用过渡dtd,如下所示: 当我在文档上执行Builder.build时,我得到以下exception: java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1305) at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startEntity(Unknown Source) at org.apache.xerces.impl.XMLEntityManager.startDTDEntity(Unknown Source) at org.apache.xerces.impl.XMLDTDScannerImpl.setInputSource(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl$DTDDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.DTDConfiguration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at nu.xom.Builder.build(Builder.java:1127) at nu.xom.Builder.build(Builder.java:1019) 如果我删除了doc类型声明,它解析就好了。 我可以从我的浏览器成功下载dtd,它告诉我该url是有效的。 我不想删除doc类型声明。 有没有办法告诉建设者不要下载dtd或提供备用dtd?

Java如何提取完整的XML块

使用此XML示例: 0 1 我想要一个简单的方法来提取节点B的XML块,返回XML String: 1 要检索此节点,我应该使用一些Java XPath库,如XOM或Java XPath,但我找不到如何获取完整的XML字符串。 我使用C#找到了两个等效的回答问题: C#如何提取完整的xml节点集 , 如何从XML文档中提取XML块?

使用Java中的命名空间创建XML文档

我正在寻找可以构造使用命名空间的XML文档的示例Java代码。 我似乎无法使用我喜欢的常用工具找到任何东西,所以希望有人可以帮助我。