首页 > 解决方案 > 我应该如何从 xml 中提取 Apache Jackrabbit 中的节点的属性?

问题描述

我一直在玩这里http://jackrabbit.apache.org/jcr/first-hops.html中的第三个示例,但是对我来说,仍然不清楚如何访问节点的属性。

在第一个屏幕截图中 可以访问 jcr 道具

我使用了我的 IDE 中的调试器并评估了这个表达式

session.getNode("/importxml/xhtml:html/xhtml:body/mathml:math/mathml:apply/mathml:apply[2]/mathml:apply[2]/mathml:cn").getProperty("jcr:xmltext/jcr:xmlcharacters").getString().trim();

您可以看到我如何访问“jcr:xmltest/jcr:xmlcharacters”并获得 2 个结果。但是,当我尝试获取此信息,从节点中获取此属性时,我无法执行此屏幕截图中的此操作。 无法获得道具

这是上面截图中的代码片段:

var node = session.getNode("/importxml/xhtml:html/xhtml:body/mathml:math/mathml:apply/mathml:apply[2]/mathml:apply[2]/mathml:cn");
var properties = node.getProperties();
List<string> result = new ArrayList<>();
while(properties.hasNext()) {
    Property property = properties.nextProperty();
    result.add(property.getString().trim());
}
return result;

您可以看到我是如何只得到一个包含“nt:unstructured”的值作为响应的。

不幸的是,我在网上、Github 等上找不到很多过时的代码示例,而且也没有像 Scrapy 或其他库/框架那样的书籍。

先感谢您。

祝你今天过得愉快!

戴维德

标签: javajcrjackrabbit

解决方案


在第一种情况下,您正在查看以下属性:

/importxml/xhtml:html/xhtml:body/mathml:math/mathml:apply/mathml:apply[2]/mathml:apply[2]/mathml:cn/jcr:xmltext

在第二种情况下:

/importxml/xhtml:html/xhtml:body/mathml:math/mathml:apply/mathml:apply[2]/mathml:apply[2]/mathml:cn

注意不同的路径。


推荐阅读