xpath where && 子句
xpath where && clause
我有 xml 这样的数据
<users>
<user email="email@email.com">
<password>pass</password>
..
</user>
</users>
我想检索 用户的记录(xml 格式) 通过电子邮件和密码过滤。
我试过了
for $user in doc("users")/user
[@email="'.$email.'"]
[password="'.$password.'"]
return $user
但我收到错误。
拜托,我怎样才能以 xml 格式 检索 用户的数据,以便我可以使用诸如 domdocument 或简单 xmlparser 之类的东西来获取各自的节点?
您可能希望将约束合并为一个约束
for $user in doc("users")//user[@email="'.$email.'" and password="'.$password.'"] return $user
这也可以通过以下方式一次性实现:
doc("users")//user[@email="'.$email.'" and password="'.$password.'"]
NTH,
彼得
它适用于此
'for $user in doc("users")//user
where
$user/password = "'.$password.'" and
$user[@email="'.$email.'"]
return $user ';
您报告错误的最可能原因是您的查询要求 user
元素显示为 users
文档的最外层元素并且满足一些进一步的约束,因此:
doc("users")/user[...][...]
但是你显示的 XML 最外层元素是 users
,而不是 user
。
在简短的 运行 中,使用 ...//user
而不是 .../user
,就像 prker 的回答中所做的那样,将解决这个问题。 (他建议只使用一个谓词是没有意义的,与你遇到的任何问题都没有关系。)这个问题也可以通过正确的路径来解决:doc("users")/users/user...
在冗长的 运行 中,您应该学会理解您的 XPath 表达式中发生了什么。这里,doc("users")
returns 你指定的 XML 文档的根目录下的文档节点,下一步 /user
(/child::user
的缩写)要求一个名为 user
的元素节点,它是文档节点的子节点。
我有 xml 这样的数据
<users>
<user email="email@email.com">
<password>pass</password>
..
</user>
</users>
我想检索 用户的记录(xml 格式) 通过电子邮件和密码过滤。 我试过了
for $user in doc("users")/user
[@email="'.$email.'"]
[password="'.$password.'"]
return $user
但我收到错误。
拜托,我怎样才能以 xml 格式 检索 用户的数据,以便我可以使用诸如 domdocument 或简单 xmlparser 之类的东西来获取各自的节点?
您可能希望将约束合并为一个约束
for $user in doc("users")//user[@email="'.$email.'" and password="'.$password.'"] return $user
这也可以通过以下方式一次性实现:
doc("users")//user[@email="'.$email.'" and password="'.$password.'"]
NTH,
彼得
它适用于此
'for $user in doc("users")//user
where
$user/password = "'.$password.'" and
$user[@email="'.$email.'"]
return $user ';
您报告错误的最可能原因是您的查询要求 user
元素显示为 users
文档的最外层元素并且满足一些进一步的约束,因此:
doc("users")/user[...][...]
但是你显示的 XML 最外层元素是 users
,而不是 user
。
在简短的 运行 中,使用 ...//user
而不是 .../user
,就像 prker 的回答中所做的那样,将解决这个问题。 (他建议只使用一个谓词是没有意义的,与你遇到的任何问题都没有关系。)这个问题也可以通过正确的路径来解决:doc("users")/users/user...
在冗长的 运行 中,您应该学会理解您的 XPath 表达式中发生了什么。这里,doc("users")
returns 你指定的 XML 文档的根目录下的文档节点,下一步 /user
(/child::user
的缩写)要求一个名为 user
的元素节点,它是文档节点的子节点。