【发布时间】:2019-11-26 13:34:59
【问题描述】:
我有一个 xml 文件,我想从 php 页面查询。实际上该文件包含用户的用户名和密码。我想查询该文件并查看用户名和密码是否匹配。这是我的php页面代码:
<?php
$username=$_POST['username'];
$password=$_POST['password'];
$xml = simplexml_load_file('users.xml') or
die("error :cannot create object");
print_r($xml);
$result = $xml->xpath("/user[username=".$username."] and //user[password=".$password."]");
foreach ($result as $node){
echo $node->id;
echo $node->username;
}
xml文件
<?xml version="1.0" encoding="utf-8"?>
<users xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<user>
<id>1</id>
<username>mygirl</username>
<password>mygirl1234</password>
<email>mygirl@hotmail.com</email>
</user>
例外
警告:SimpleXMLElement::xpath():C:\Program 中的表达式无效 文件 (x86)\EasyPHP-Devserver-17\eds-www\Freshshop 免费网站 模板 - Free-CSS.com\freshshop\successfullogin.php 第 11 行
警告:SimpleXMLElement::xpath(): xmlXPathEval: 评估失败 C:\Program Files (x86)\EasyPHP-Devserver-17\eds-www\Freshshop 免费 网站模板 - Free-CSS.com\freshshop\successfullogin.php 上线 11
警告:在 C:\Program Files 中为 foreach() 提供的参数无效 (x86)\EasyPHP-Devserver-17\eds-www\Freshshop 免费网站模板 - Free-CSS.com\freshshop\successfullogin.php 第 13 行
UPDATE
$xml = simplexml_load_file('users.xml') or
die("error :cannot create object");
$username='neem88';
$pwd='dbhcasvc';
$query=sprintf('/users/user[ username="%s" and password="%s" ]', $username,
$pwd );
libxml_use_internal_errors( true );
$dom=new DOMDocument();
$dom->validateOnParse=false;
$dom->recover=true;
$dom->strictErrorChecking=false;
$dom->loadXML( $xml );
$errors = libxml_get_errors();
libxml_clear_errors();
$xp=new DOMXPath( $dom );
$col=$xp->query( $query );
if( $col->length > 0 ){
foreach( $col as $node )echo $node->id;
}
【问题讨论】:
-
这里有两件事要注意,记住我从未使用过
simplexml_load_file或任何它的相关方法。首先,我想simplexml_load_file将创建一个Object,您不能使用->loadXML或其他方法将其加载到DOMDocument中......这两个类(simplexml和DOMDocument)是不可互换的——你可能最好简单地做$dom->load('users.xml')其次:XPath 表达式与我给出的示例不匹配 - 你需要两个前导斜杠 - 即://users/user而不是/users/user -
@RamRaider..谢谢你的负载..它的工作原理..我使用负载('users.xml)