Tag: dom

Java中的高效XSLT管道(或将结果重定向到源)

我有一系列相互馈送的XSL 2.0样式表,即样式表A的输出馈送B馈送C. 这样做最有效的方法是什么? 重新提出的问题是:如何有效地将一个转换的输出路由到另一个转换。 这是我的第一次尝试: @Override public void transform(Source data, Result out) throws TransformerException{ for(Transformer autobot : autobots){ if(autobots.indexOf(autobot) != (autobots.size()-1)){ log.debug(“Transforming prelim stylesheet…”); data = transform(autobot,data); }else{ log.debug(“Transforming final stylesheet…”); autobot.transform(data, out); } } } private Source transform(Transformer autobot, Source data) throws TransformerException{ DOMResult result = new DOMResult(); autobot.transform(data, result); Node node = result.getNode(); […]

从org.w3c.dom.Node获取Xpath

我可以从org.w3c.dom.Node获取完整的xpath吗? 说当前节点指向一些xml文档中间的位置。 我想提取该元素的xpath。 我正在寻找的输出xpath是//parent/child1/chiild2/child3/node 。 节点xpath的父节点。 只需忽略具有表达式并指向同一节点的xpath。

为什么sax解析比dom解析更快? stax是如何工作的?

有点相关: 来自java的libxml2 是的,这个问题相当啰嗦 – 抱歉。 我保持尽可能密集。 我把这些问题加粗,以便在阅读整篇文章之前更容易窥视。 为什么sax解析比dom解析更快? 我唯一能想到的就是w / sax你可能忽略了大部分传入数据,因此不会浪费时间处理你不关心的xml部分。 IOW – 解析w / SAX后,无法重新创建原始输入。 如果您编写了SAX解析器,以便它占据每个xml节点(并因此可以重新创建原始节点),那么它不会比DOM更快吗? 我问的原因是我正在尝试更快地解析xml文档。 我需要在解析后访问整个xml树。 我正在编写一个插入第三方服务的平台,所以我无法预测xml文档的哪些部分需要以及哪些部分不需要。 我甚至不知道传入文件的结构。 这就是为什么我不能使用jaxb或sax。 内存占用对我来说不是问题,因为xml文档很小,我一次只需要1个内存。 这是解析这个相对较小的xml文档所花费的时间。 我之前没有使用过stax,但也许我需要进一步调查,因为它可能是中间地带? 如果我理解正确,stax会保留原始的xml结构并处理我要求的部分吗? 通过这种方式,原始的解析时间可能很快,但每次我要求它遍历尚未遍历的树的一部分时,那就是处理发生的时间? 如果您提供了回答大多数问题的链接,我会接受您的回答(如果他们已经在其他地方得到回答,您不必直接回答我的问题)。 更新:我在sax中重写了它,并在avg 2.1 ms上解析文档。 这比dom所采用的2.5毫秒有所改善(快16%),但这并不是我(等人)猜到的那么大。 谢谢

SAX解析器可以在Java中使用XPath吗?

我正在尝试迁移我的一个类,它使用带有大量XPath表达式的DOM解析来进行SAX解析。 DOM解析对我来说很好,但是我尝试解析的一些文件太大而导致服务器超时。 我想重用XPath与SAX解析,但我不确定是否可能,如果不可能,请你帮助我,因为我不知道当我只使用SAX时,以下代码将如何: Document doc = bpsXml.getDocument(); String supplierName = BPSXMLUtils.getXpathString(doc, “/Invoice/InvoiceHeader/Party[@stdValue=’SU’]/Name/Name1”); String language = BPSXMLUtils.getXpathString(doc, “/Invoice/InvoiceHeader/InvoiceLanguage/@stdValue”);

publicId和systemId之间需要空格

我试图通过在jsp中编写一些代理代码,从我的计算机本地对其他域进行ajax调用。 这是我调用proxy.jsp页面的jQuery AJAX代码。 var metadata = ‘https://rest-search.host.com/machine/search/meta?id=’; var on_show_info= function() { var AjaxCall = data + current_doc_info.id; alert(AjaxCall); request_meta_info = $.ajax({ url: “proxy.jsp?url=” + AjaxCall, type: ‘GET’, success: check, error: error }); }; 我的JSP文件是: – 当我检查响应时,我收到它正在解析的XML文件的错误: Error 500 White spaces are required between publicId and systemId. HTTP ERROR 500 Problem accessing /proxy.jsp. Reason: White spaces […]

如何在序列化之前从DOM中删除仅空白文本节点?

我有一些Java(5.0)代码从各种(缓存)数据源构造DOM,然后删除不需要的某些元素节点,然后使用以下方法将结果序列化为XML字符串: // Serialize DOM back into a string Writer out = new StringWriter(); Transformer tf = TransformerFactory.newInstance().newTransformer(); tf.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, “yes”); tf.setOutputProperty(OutputKeys.ENCODING, “UTF-8”); tf.setOutputProperty(OutputKeys.INDENT, “no”); tf.transform(new DOMSource(doc), new StreamResult(out)); return out.toString(); 但是,由于我要删除多个元素节点,最终在最终的序列化文档中会有很多额外的空格。 是否有一种简单的方法可以在将序列化为字符串之前(或同时)从DOM中删除/折叠无关的空格?

在Java DOM中将节点的内部XML作为String获取

我有一个XML org.w3c.dom.Node,如下所示: foo bar 如何将foo bar部分作为字符串?