Oracle - Berkeley DB XML Java API - XML 查询以获取多个级别的属性值

发布于 2024-10-29 22:39:49 字数 950 浏览 1 评论 0原文

使用 Java API 评估 Berkeley DB。以下是我的测试 XML 数据之一:

<master>
    <env name="development">
        <server name="tomcat1" ip="122.122.123.1">
            <domain name="domain1">
                <application name="GreatApplication1" status="enabled"/>
            </domain>
            <domain name="domain2">
                <application name="GreatApplication2" status="enabled"/>
                <application name="NotSoGreatApplication2" status="disabled"/>
                <application name="GreatApplication3" status="enabled"/>
            </domain>
        </server>
    </env>
</master>

使用以下查询字符串,我可以查询任何“服务器”的任何“域”上的应用程序及其状态:(假设 envs.dbxml 是我的 Xml 数据库)

collection('envs. dbxml')/master/env[@name=$name]/server/domain/application/@*/string()

我希望能够在此查询返回结果时获取各个服务器名称。如何才能做到这一点?此查询将依次返回所有应用程序和状态值。

Evaluating Berkeley DB with Java APIs. Following is one of my test XML data:

<master>
    <env name="development">
        <server name="tomcat1" ip="122.122.123.1">
            <domain name="domain1">
                <application name="GreatApplication1" status="enabled"/>
            </domain>
            <domain name="domain2">
                <application name="GreatApplication2" status="enabled"/>
                <application name="NotSoGreatApplication2" status="disabled"/>
                <application name="GreatApplication3" status="enabled"/>
            </domain>
        </server>
    </env>
</master>

With following query String, I can query applications and their status on any "domain" for any "server": (assuming envs.dbxml is my Xml db)

collection('envs.dbxml')/master/env[@name=$name]/server/domain/application/@*/string()

I want to be able to get the individual server names when this query returns results. How can that be achieved? This query will just return all the applications and status values one after other.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浮华 2024-11-05 22:39:49

使用

(
  /master/env[@name=$name]/server/@name
 |
  /master/env[@name=$name]/server/domain/application/@*
)
  /string(.)

或者,这个较短的形式

/master/env[@name=$name]/server/(@name|domain/application/@*)/string(.)

解释:这里我们使用 XPath |(联合)运算符和XPath 2.0 语法,允许以下类型的表达式:expr/(expr)expr/func(argList) 类型的表达式

Use:

(
  /master/env[@name=$name]/server/@name
 |
  /master/env[@name=$name]/server/domain/application/@*
)
  /string(.)

Or, this shorter form:

/master/env[@name=$name]/server/(@name|domain/application/@*)/string(.)

Explanation: Here we use the XPath |(union) operator and the XPath 2.0 syntax that allows expressions of the kind: expr/(expr) and expressions of the kind expr/func(argList)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文