给定XML:
<root name="value">
<level1>
<level2>Text</level2>
</level1>
</root>
我希望XPath返回值,XPath返回XML序列化
<level1>
<level2>Text</level2>
</level1>
我正在使用Java中Saxon 9.6的a9api接口。
我发现我可以调用XdmValue。toString()获取XPath求值结果的XML序列化,这会获得选择元素所需的结果,但在选择属性时返回name=“value”
。我可以调用XdmItem。getStringValue()获取字符串值,该值为属性获取正确的值,但返回元素的文本内容。
Michael Kay之前说过“Saxon的s9api接口…返回XdmValue对象,您可以查询其类型”。我可以看到,我可以执行instanceof检查,以确定它是否是XdmAtomicValue、XdmExternalObject、XdmFunctionItem或XdmNode,但元素和属性都是XdmNode的实例。我如何区分这两者?
(我无法修改XPaths,因为它们是由用户提供的。)
我刚写完问题就发现了答案,所以我会把它分享给其他人。
将XdmItem
转换为XdmNode
后,您可以调用XdmNode.getNodeKind()
,它从XdmNodeKind
枚举返回一个值,指定它是哪种类型的节点:
XdmValue matchList = xPathSelector.evaluate();
XdmItem firstItem = matchList.itemAt(0);
if (firstItem instanceof XdmNode) {
XdmNode xdmNode = (XdmNode) firstItem;
XdmNodeKind nodeKind = xdmNode.getNodeKind();
if (nodeKind == XdmNodeKind.ELEMENT) {
return xdmNode.toString();
}
}
return firstItem.getStringValue();
问题内容: 我正在Python中使用Selenium。我想获取一个元素的,并检查它是否是我所期望的。 这是我的代码: 我怎样才能做到这一点?Selenium文档似乎有很多关于选择元素的内容,但是与属性无关。 问题答案: 您可能正在寻找。一个例子示此处以及
我正在使用Python中的Selenium。我想获取
问题内容: 我正在尝试遍历所有使用forEach 重构的元素。有什么想法为什么在FF,Chrome或IE中不起作用? 问题答案: 您需要使用以下命令将节点列表转换为数组: 或用于循环。 并将ShowResults函数更改为: 为什么我们需要这样做? JavaScript中的某些对象看起来像一个数组,但不是一个。这通常意味着它们具有索引访问和length属性,但是没有任何数组方法。示例包括特殊的变量
我需要实现size()函数,以便它对列表中的元素数量进行计数。 添加作文类的截图。我想我得从那里用一种方法。接口只声明push pop peek isempty函数。没有密码。我相信size()函数不需要。这是我的第一堂编程课,所以我希望我已经给出了解决这个问题所需要的一切。请在此处帮助输入图像说明
在使用Vdt的过程中,你也许会遇到这样一个问题:设置的属性,并不能渲染出来,例如: <input maxlength="10" /> 上述例子中,设置的maxlength属性丢失了。要理解这个原因,可以看看这段介绍 Content attribute & IDL attribute, 以及Virtual-Dom文档中对VNode的介绍 Content vs IDL attribute Conte
问题 在解析获得一个Document实例对象,并查找到一些元素之后,你希望取得在这些元素中的数据。 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法 对于一个元素中的文本,可以使用Element.text()方法 对于要取得元素或属性中的HTML内容,可以使用Element.html(), 或Node.outerHtml()方法 示例: String html =