Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php和xml:查找xml节点,然后在php中使用其值_Php_Xml_Xpath_Nodes - Fatal编程技术网

php和xml:查找xml节点,然后在php中使用其值

php和xml:查找xml节点,然后在php中使用其值,php,xml,xpath,nodes,Php,Xml,Xpath,Nodes,我的问题是找不到在XML文档中查找节点的方法 就是这样(users.xml): 10 用户1 22 用户2 13 用户3 在$\u会话['username']中,我拥有当前登录用户的用户名。我想使用xpath或其他方法将已登录用户的id(假设User2已登录)分配给变量$userID。有人能帮我吗,因为到目前为止我得到的都是错误 提前谢谢 我不知道这是否有助于您阅读nodes childes的内容,但“是意大利语: 编辑从链接中提取要点: 例如,如果您有以下XML文件books.XML(书

我的问题是找不到在XML文档中查找节点的方法 就是这样(
users.xml
):


10
用户1
22
用户2
13
用户3
$\u会话['username']
中,我拥有当前登录用户的用户名。我想使用
xpath
或其他方法将已登录用户的id(假设User2已登录)分配给变量
$userID
。有人能帮我吗,因为到目前为止我得到的都是错误


提前谢谢

我不知道这是否有助于您阅读nodes childes的内容,但“是意大利语:

编辑从链接中提取要点:

例如,如果您有以下XML文件
books.XML
(书籍列表):


神曲
但丁·阿利吉耶里
我是Promessi Sposi
亚历山德罗·曼佐尼
马拉沃格利亚岛
维尔加
正如你所看到的,这是一个书籍列表,每本书都有标题和作者

使用Xpath方法,我们可以使用Xpath语言(W3C标准)在XML文档中搜索。例如,要访问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);
?>
xpath(“/books/book[@id=2]”);
//数组,该数组包含与id为2的书籍相关的信息
印刷费($arr);
?>
在上面的链接中还有更多的例子——希望通过这段翻译,您能够理解这里给出的其他代码示例。

使用DOMXpath::evaluate()方法

获取
用户
元素:

/users/user

仅使用特定的
用户名
子元素:

/users/user[username=“User2”]

找到的用户的
id
子元素:

/users/user[username=“User2”]/Id

将第一个找到的
id
元素强制转换为字符串

string(/users/user[username=“User2”]/Id)


我用意大利语发布了一个链接,我知道这个问题的答案是‘谷歌翻译,我不明白这个短语“顺便说一句,那个网站正在播放一个非常完整的视频’?谢谢,你觉得你的回答没那么有用吗?现在我要做一个完整的谷歌翻译,我的意大利语真的低于任何可以接受的水平。如果你只是简单地剪切粘贴并翻译你答案中的相关部分,你就能帮上忙。这使你的答案对未来的访问者直接有用。这不是我们应该在这里努力的吗?(该网站播放了一段我无法快速摆脱的视频,这让我有点恼火,仅此而已)什么样的错误?如果你把它加到你的问题中,它会有帮助。
<?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>
<?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);
?>
$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"