#php #xml #forms #xpath #xml-parsing
#php #xml #формы #xpath #синтаксический анализ xml
Вопрос:
это мой XML-файл и мой php-код. я хочу выполнить поиск по имени через текстовое поле в моей форме php, и я хочу отобразить всю информацию о конкретном студенте, но проблема в том, что мой xpath не работает. любая помощь с xpath.
<students>
<student>
<firstname>John</firstname>
<lasttname>Snow</lasttname>
<student_id>160600</student_id>
<gender>male</gender>
<dob>23-06-95</dob>
<age>21</age>
<email>JohnSnow@gmail.com</email>
<mobilenumber>57675060</mobilenumber>
<address>Winter Fel</address>
<cohort>BSE15PT</cohort>
<programme>Software Engineering</programme>
<mode>PT</mode>
</student>
<student>
<firstname>meryl</firstname>
<lastname>Burton</lastname>
<student_id>150500</student_id>
<gender>female</gender>
<dob>26-07-95</dob>
<email>mirena@gmail.com</email>
<mobilenumber>57800603</mobilenumber>
<address>rose hill</address>
<cohort>BSE15AFT</cohort>
<programme>software engineering</programme>
<mode>ft</mode>
</student>
</students>
<?php
if(isset($_POST['search']))
{
$xml=simplexml_load_file("studentInstance.xml") or die("Error: Cannot Create Object");
$xpath = $xml;
//query the document
$name = $_POST['studentname'];
$query = $xpath->query("/students/student/[firstname = '$name']");
echo $query;
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Searching</title>
</head>
<body>
<form method="POST" action="searchRecord.php">
<label>Enter Student Name</label>
<input type="text" name="studentname"><br>
<input type="submit" name="search" value="search">
</form>
</body>
</html>
Комментарии:
1. Я не уверен, и я нахожусь в мобильном телефоне, но student — это список, я думаю, может быть, вам нужен определенный индекс / students / student[1]/firstname
Ответ №1:
Удалите последнюю косую черту вашего запроса.
Изменение от этого:
"/students/student/[firstname = '$name']"
к этому:
"/students/student[firstname = '$name']"
РАБОЧИЙ ПРИМЕР:
<?php
$xml = <<< EOF
<students>
<student>
<firstname>John</firstname>
<lasttname>Snow</lasttname>
<student_id>160600</student_id>
<gender>male</gender>
<dob>23-06-95</dob>
<age>21</age>
<email>JohnSnow@gmail.com</email>
<mobilenumber>57675060</mobilenumber>
<address>Winter Fel</address>
<cohort>BSE15PT</cohort>
<programme>Software Engineering</programme>
<mode>PT</mode>
</student>
<student>
<firstname>meryl</firstname>
<lastname>Burton</lastname>
<student_id>150500</student_id>
<gender>female</gender>
<dob>26-07-95</dob>
<email>mirena@gmail.com</email>
<mobilenumber>57800603</mobilenumber>
<address>rose hill</address>
<cohort>BSE15AFT</cohort>
<programme>software engineering</programme>
<mode>ft</mode>
</student>
</students>
EOF;
$xml = simplexml_load_string($xml);
$names = $xml->xpath("/students/student[firstname = 'meryl']");
print_r($names);
ДЕМОНСТРАЦИЯ: