Tag: xpath

流式XPath评估

是否有任何生产就绪库可用于针对提供的xml文档进行流式XPath表达式评估? 我的调查表明,大多数现有解决方案在评估xpath表达式之前将整个DOM树加载到内存中。

java.lang.VerifyError的

我正在开发一个Android项目,该项目使用我正在创建的单独JAR文件中的类和方法,问题在于每次尝试调用其静态方法时都会使用名为XpathUtil的特定util类抛出VerifyError 。 这是我的XpathUtil类的样子: public class XpathUtil { private static XPath xpath = XPathFactory.newInstance().newXPath(); private static String TAG = “XpathUtil”; public static Document createXpathDocument(String xml) { try { Log.d(TAG , “about to create document builder factory”); DocumentBuilderFactory docFactory = DocumentBuilderFactory .newInstance(); Log.d(TAG , “about to create document builder “); DocumentBuilder builder = docFactory.newDocumentBuilder(); Log.d(TAG , “about […]

JAVA:使用XPath表达式构建XML文档

我知道这不是XPath的真正含义,但如果我有一个XPath表达式的HashMap来评估如何构建XML文档。 我找到了dom-4j的DocumentHelper.makeElement(branch,xpath),除了它无法创建属性或索引。 当然存在可以做到这一点的图书馆? Map xMap = new HashMap(); xMap.put(“root/entity/@att”, “fooattrib”); xMap.put(“root/array[0]/ele/@att”, “barattrib”); xMap.put(“root/array[0]/ele”, “barelement”); xMap.put(“root/array[1]/ele”, “zoobelement”); 会导致: barelement zoobelement

使用XPath包含Java中的HTML

我正在使用java程序中的XPath从HTML页面中抓取值来获取特定标记,偶尔使用正则表达式来清理我收到的数据。 经过一些研究,我将HTML Cleaner( http://htmlcleaner.sourceforge.net/ )作为将原始HTML解析为良好XML格式的最可靠方法。 但是,HTML Cleaner只支持XPath 1.0,我发现自己需要像’contains’这样的函数。 例如,在这段XML中: Hello 我希望能够通过以下XPath获取文本“Hello”: //div/td[contains(@id, ‘foo’)]/text() 有没有办法获得这个function? 我有几个想法,但如果我不需要,我宁愿不重新发明轮子: 如果有办法调用HTML Cleaner的evaluateXPath并返回TagNode(我还没有找到),我可以在返回的TagNode上使用XML序列化程序并将XPath链接在一起以实现所需的function。 我可以使用HTML Cleaner清理XML,将其序列化为字符串,并将其与另一个XPath库一起使用,但我找不到适用于字符串的优秀java XPath评估程序。 使用像getElementsByAttValue这样的TagNode函数,我基本上可以重新创建XPath评估并使用String.contains插入包含function 简短的问题:有没有办法在现有Java库中使用HTML包含HTML?

从Java发送XPath变量

我有一个XPath表达式,用于搜索静态值。 在此示例中,“test”是该值: XPathExpression expr = xpath.compile(“//doc[contains(., ‘test’)]/*/text()”); 如何传递变量而不是固定字符串? 我在Eclipse中使用Java。 有没有办法使用Java String的值来声明XPath变量?

Xpath转换在java中不起作用

这是我的xml文档。 我想使用xml签名仅签署userID部分。 我正在使用xpath转换来选择该特定元素。 xyz text http://localhost:8080/saml/SProvider.jsp 我使用以下代码添加转换: transformList.add(exc14nTransform); transformList.add(fac.newTransform(Transform.XPATH, new XPathFilterParameterSpec(“samlp:AuthnRequest/UserID xmlns:samlp=\”urn:oasis:names:tc:SAML:2.0:protocol\””))); 但我得到以下内容: Original Exception was javax.xml.transform.TransformerException: Extra illegal t okens: ‘xmlns’, ‘:’, ‘samlp’, ‘=’, ‘”urn:oasis:names:tc:SAML:2.0:protocol”‘ 所以,我尝试删除xmlns部分。 transformList.add(fac.newTransform(Transform.XPATH, new XPathFilterParameterSpec(“samlp:AuthnRequest/UserID”))); 但它签署了整个文件并给出了以下信息: com.sun.org.apache.xml.internal.security.utils.CachedXPa thFuncHereAPI fixupFunctionTable INFO: Registering Here function 问题是什么? 编辑 正如@JörnHorstmann所说,这个消息只是一个日志或类似的东西。 现在的问题是,即使在给出xpath查询之后,整个文档也会被签名而不仅仅是UserID。 我通过在签署文档后更改元素的值来确认这一点。 结果是文档没有得到validation(如果它只签署了UserID部分,那么对所做的任何更改都应该产生有效的签名。)

Java如何提取完整的XML块

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

为什么人们应该更喜欢在IE中使用CSS而不是XPath?

我正在开发一个只与IE7和IE8兼容的应用程序。 我不知道为什么,但有些人建议在识别IE中的元素时使用CSS而不是XPath。 当我访问官方Selenium网站时。 我看了这条消息 WebDriver尽可能使用浏览器的本机XPathfunction。 在那些没有本机XPath支持的浏览器上,我们提供了自己的实现。 除非您了解各种xpath引擎中的差异,否则这可能会导致一些意外行为。 我想知道在哪里可以找到各种xpath引擎的差异,在哪种情况下我应该使用CSS,以及在哪些XPath中,如果我使用的是IE。 谢谢。

如何使用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的值。

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

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