我的问题是我找不到在XML文档中查找节点的方法
这是它(users.xml
):
<users>
<user>
<id>10</id>
<username>User1</username>
</user>
<user>
<id>22</id>
<username>User2</username>
</user>
<user>
<id>13</id>
<username>User3</username>
</user>
</users>
在$_SESSION['username']
中,我拥有当前登录用户的用户名。我想使用xpath
或其他东西将已记录用户的ID(假设User2已记录)分配给变量$userID
。有人可以帮助我,因为到目前为止我所得到的都是错误。
提前致谢!
答案 0 :(得分:2)
使用DOMXpath :: evaluate()方法。
获取user
元素:
/users/user
仅限特定的username
子元素:
/users/user[username = "User2"]
找到的用户的id
子元素:
/users/user[username = "User2"]/Id
首先将id
元素转换为字符串
string(/users/user[username = "User2"]/Id)
$xml = <<<'XML'
<users>
<user>
<id>10</id>
<username>User1</username>
</user>
<user>
<id>22</id>
<username>User2</username>
</user>
<user>
<id>13</id>
<username>User3</username>
</user>
</users>
XML;
$dom = new DOMDocument();
$dom->loadXml($xml);
$xpath = new DOMXpath($dom);
$userName = 'User2';
$userId = $xpath->evaluate('string(/users/user[username = "'.$userName.'"]/id)');
var_dump($userId);
输出
string(2) "22"
答案 1 :(得分:0)
我不知道这对你来说读取节点childes的内容是否有用,但是'是意大利语:
http://www.edinweb.altervista.org/2013/10/16/leggere-xml-con-simplexml/
编辑从链接中提取要点:
例如,如果您有以下XML文件books.xml
(书籍列表):
<?xml version='1.0' ?>
<books>
<book id="1">
<title>La Divina Commedia</title>
<author>Dante Alighieri</author>
</book>
<book id="2">
<title>I Promessi Sposi</title>
<author>Alessandro Manzoni</author>
</book>
<book id="3">
<title>I Malavoglia</title>
<author>Giovanni Verga</author>
</book>
</libri>
如您所见,这是一本书籍清单,每本书都有标题和作者。
使用Xpath方法,我们可以使用X33语言搜索XML文档,该语言是W3C标准。例如,要访问id = 2的书:
<?php
$xml=simplexml_load_file("books.xml");
$arr = $xml->xpath("/books/book[@id=2]");
//array that contains the information relating to the book with id=2
print_r($arr);
?>
上面的链接还有其他一些例子 - 希望通过这一点翻译,您将能够理解那里提供的其他代码示例。