Tag: xml

从org.w3c.dom.Node获取Xpath

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

Jaxb:如何解组xs:任何XML字符串部分?

我有一个应用程序使用Jaxb进行XML 转换,并使用maven-jaxb2-plugin自动生成类。 在我的架构深处,我有可能输入“ANY”xml。 更新:这更好地描述了我的架构。 一些已知的XML包含一个完全未知的部分(“任何”部分)。 …. 这将(通过jaxb)映射到这样的内部类。 @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = “”, propOrder = { “any” }) public static class XmlAnyPayload { @XmlAnyElement(lax = true) protected Object any; 当我拆开整个结构时,没问题。 “Object any”将呈现为org.apache.xerces.dom.ElementNSImpl。 现在,我想手动重新创建Java对象,然后转到XML。 我如何获取一些随机XML并放入any(org.apache.xerces.dom.ElementNSImpl)元素以构建Java对象? 另外,下一种情况是当我将这个元素作为java时,我想解组这个部分(为了能够提取这个元素的XML字符串)。 但这是不可能的。 我得到一个关于根元素的例外。 但是不可能注释ElementNSImpl。 unable to marshal type “com.sun.org.apache.xerces.internal.dom.ElementNSImpl” as an element because it is missing an @XmlRootElement annotation 您对如何处理这些问题有什么建议吗?

如何从Java调用C ++?

我想从Java调用C ++方法。 我读到了JNI,但我没有得到如何获取所有库文件以及我应该保留它以便从命令行运行程序。 有没有办法从Eclipse本身调用C ++方法,因为我用它来运行Java类。

有关Java上无效XML字符的错误

在Java上解析xml文件我得到错误: An invalid XML character (Unicode: 0x0) was found in the element content of the document. xml来自web服务。 问题是我只在webservice在localhost(windows + tomcat)上运行时才会收到错误,但是当webservice在线时(linux + tomcat)则不会。 我怎样才能替换无效的char? 谢谢。

如何使用JAXB将空值表示为空元素?

我的XSD结构如下: – 当我在这个字段中设置空值时,它允许我,但是在他从JAXB编组的XML生成时,它产生输出 而在结果中我想要输出为即不想要架构和其他属性。 我在使用XMLStreamWriter的帮助下摆脱了这一点,但它在单行中生成了完整的XML 。 我需要格式化良好的XML 。 如果我需要使用IndentingXMLStreamWriter我的Java版本不支持它,我无法控制Java容器进行更改或修改。 请建议任何形成XML Well Formatted的解决方案。

为什么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%),但这并不是我(等人)猜到的那么大。 谢谢

Java / JAXB:将XML属性解组为特定的Java对象属性

有一个丑陋的XML文件必须是unmarshalled: 8081 WARNING 64M yes 生成的Java对象应该是: public class DefaultOptions { private int defaultPort; private String logLevel; // etc… } public class CustomOptions { private String memory; private String compatibility; // etc… } 这个问题的答案非常接近,但我无法弄清楚最终的解决方案。

如何使用XPath和Java更新XML

我有一个XML文档,以及该文档的XPath表达式。 我必须在运行时使用XPath来更新doc。 我怎么能用Java做到这一点? 以下是我的xml: Sonu Kapoor 24 M 54879 Jasmin 28 F 78745 Josef 232 F 53454 我必须在//PersonList/Person[2]/Name下更改name和age的值。

DocumentBuilder.parse(InputStream)返回null

我正在修复有关DocumentBuilder.parse的现有代码的错误。 我有以下代码: String theOutput; theOutput = response.encodeURL(prefix + “/include/sampleForConversion.jsp?” + request.getQueryString(); StreamSource xmlSource = new StreamSource(new URL(theOutput).openStream(), “http://sampleApps.net/static/dataDef1.1.dtd”); Document xmlDoc = dBuilder.parse(xmlSource.getInputStream()); 我不明白为什么我得到xmlDoc的空值虽然我有theOutput和xmlSource变量的有效值。 请帮忙。 谢谢!

NamespaceContext并使用带有XPath的命名空间

解析包含Java中的命名空间的xpath似乎需要使用NamespaceContext对象,将前缀映射到命名空间URL,反之亦然。 但是,除了自己实现之外,我找不到获取NamespaceContext机制。 这似乎违反直觉。 问题:是否有任何简单的方法从文档中获取NamespaceContext ,或创建一个,或者失败,完全放弃前缀并指定具有完全限定名称的xpath?