Tag: xml namespaces

如何在VTD Xpath查找上输入名称空间前缀

我正在构建基于VTD的XML解析引擎,以便处理来自多个输入系统的文件。 我目前正在尝试从带有命名空间前缀的标签中获取值: CLIENT NAME 1 并查询以下Xpath: //client/age/text() //client/name/text() 如何设置VTD AutoPilot忽略名称空间前缀? 注意 :我无法更改xpath,因为我已经使用JDK的默认xpath引擎实现了这个引擎。 更新 :请参阅下面我用来测试的代码。 文件类似于顶部的文件: @Test public void doFile() throws Exception { byte[] xmlData = FileUtils.loadFile(“namespace-test.xml”); VTDGen gen = new VTDGen(); gen.setDoc(xmlData); gen.parse(false); VTDNav vtd = gen.getNav(); AutoPilot pilot = new AutoPilot(vtd); pilot.selectXPath(“//clients”); int re = pilot.evalXPath(); System.out.println(re); if (re >= 0) { System.out.println(vtd.toString(re)); } […]

在将对象序列化为XML时如何添加XML命名空间(xmlns)

我在XStream的帮助下将对象序列化为XML。 如何告诉XStream将xmlns插入到对象的XML输出中? 举个例子,我有这个想要序列化的简单对象: @XStreamAlias(value=”domain”) public class Domain { @XStreamAsAttribute private String type; private String os; (…) } 如何使用XStream实现以下输出? linux

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字符串是字符串,对吧?

Dom4j selectNodes(arg)不提供节点列表

我在java中使用DOM4j进行XML工作,我的xml是这样的: …… ….. 然后, Listlist = document.selectNodes(“/abcd/efg”); 得到列表零的大小。 我觉得这是由于xml中指定的命名空间。 我尝试了很多,但没有成功。

在编组jaxb时从根元素中删除xmlns属性

这可能与JAXB Marshaller有关 – 如何抑制xmlns命名空间属性? 但我的问题有点不同。 我做常规的java编组,我的xsd没有名称空间。生成的xml也没有名称空间,除了根元素。 unwanted namespace来自同一个项目中的另一个模式,我不确定为什么会在此阶段获取它。 我的rootElement.java由jaxb2-maven-plugin生成,如下所示: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = “”, propOrder = { “feed” }) @XmlRootElement(name = “rootElement”, namespace = “”) public class RootElement{ …. } 此时我想要的是从生成的xml中删除xmlns:ns2=”unwanted namespace”属性,我正在努力解决它。 我查看了我的package-info.java,它看起来像: @javax.xml.bind.annotation.XmlSchema(namespace = “unwanted namespace”, elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) package com.mypackage; 我尝试添加他-npa但是由于某种原因它不能用于jaxb2-maven-plugin 。 我尝试了NamespaceMapper但它适用于更改前缀。 我无法完全删除命名空间。 这让我困扰了一天。

JAX-WS:为什么嵌套元素在“”命名空间中?

玩具服务如下 @WebService(targetNamespace=”http://www.example.org/stock”) @SOAPBinding(style=Style.RPC,parameterStyle=ParameterStyle.WRAPPED) public class GetStockPrice { @WebMethod(operationName=”GetStockPrice”,action=”urn:GetStockPrice”) @WebResult(partName=”Price”) public Double getPrice( @WebParam(name=”StockName”) String stock ) { return null; } } JAX-WS生成的客户端创建SOAP消息,其中StockName参数没有命名空间: IBM 我希望并希望StockName生成为 IBM 即在目标名称空间中,而不是在匿名名称空间中(ns2不是默认的,据我所知,从消息中可以看出)。 我想知道如何让JAX-WS将目标命名空间添加到消息的嵌套元素中? 尝试将名称空间指定给WebParam注释时没有任何改变,因为在使用RPC时会忽略此参数。 或者……这是否意味着RPC风格的参数始终是匿名的? UPDATE 傻我。 部分解决了。 我必须做的是 style = Document,为元素启用目标命名空间 param style = Wrapped,以启用顶级元素 为WebParam指定目标命名空间(为什么不使用服务?文档说应该使用服务命名空间) 那是: @WebService(targetNamespace=”http://www.example.org/stock”) @SOAPBinding(style=Style.DOCUMENT,parameterStyle=ParameterStyle.WRAPPED) public class GetStockPrice { @WebMethod(operationName=”GetStockPrice”,action=”urn:GetStockPrice”) @WebResult(partName=”Price”) public Double getPrice( @WebParam(name=”StockName”,targetNamespace=”http://www.example.org/stock”) String […]

Spring 3 applicationContext-security-JDBC.xml有bean:bean不是bean?

有人可以告诉我在我的ApplicationContext中我必须使用bean:bean而不是bean以及如何修复它。

如何使用java dom从xml中删除命名空间?

我有以下代码 DocumentBuilderFactory dbFactory_ = DocumentBuilderFactory.newInstance(); Document doc_; DocumentBuilder dBuilder = dbFactory_.newDocumentBuilder(); StringReader reader = new StringReader(s); InputSource inputSource = new InputSource(reader); doc_ = dBuilder.parse(inputSource); doc_.getDocumentElement().normalize(); 然后我就能做到 doc_.getDocumentElement(); 并得到我的第一个元素,但问题是,而不是job元素是tns:job 。 我知道并试图使用: dbFactory_.setNamespaceAware(true); 但这不是我想要的东西,我需要一些东西来完全摆脱命名空间。 任何帮助将不胜感激,谢谢, 玩笑

JAXB将不需要的名称空间声明附加到标记

我正在实现一个自制的XMPP子协议,我正在使用StAX和JAXB的组合来解析/编组消息。 当我编组一条消息时,我最终会遇到大量不需要的命名空间声明: compton@ilf 代替: compton@ilf 有什么办法可以转变吗? 所有这些名称空间都用在由JAXB编组/解组的不同消息中,但每条消息都使用一个名称空间。 PS。 我不是XML专家,如果我犯了一些愚蠢的错误,请不要骂我;)

查找XML文档中的所有名称空间声明 – xPath 1.0 vs xPath 2.0

作为Java 6应用程序的一部分,我想在XML文档中查找所有名称空间声明,包括任何重复项。 编辑 :Per Martin的请求,这是我正在使用的Java代码: XPathFactory xPathFactory = XPathFactory.newInstance(); XPath xPath = xPathFactory.newXPath(); XPathExpression xPathExpression = xPathExpression = xPath.compile(“//namespace::*”); NodeList nodeList = (NodeList) xPathExpression.evaluate(xmlDomDocument, XPathConstants.NODESET); 假设我有这个XML文档: a e txt:f 要查找所有名称空间声明,我使用xPath 1.0将此xPath语句应用于XML文档: //namespace::* 它找到4个命名空间声明,这是我期望(和期望): /root[1]/@xmlns:att – attribute.com /root[1]/@xmlns:ele – element.com /root[1]/@xmlns:txt – textnode.com /root[1]/@xmlns:xml – http://www.w3.org/XML/1998/namespace 但是,如果我改为使用xPath 2.0 ,那么我将获得16个名称空间声明(前面的每个声明4次),这不是我期望的(或期望的): /root[1]/@xmlns:xml – http://www.w3.org/XML/1998/namespace /root[1]/@xmlns:att – attribute.com /root[1]/@xmlns:ele […]