Может кто-нибудь сказать мне причину провала этого XPATH запроса:XPath-запрос, кажется, терпит неудачу
//Pages/*[(name() = 'Home') or following-sibling::Home]
на этой XML-структуры:
<Pages>
<copyright>me inc. 2015,</copyright>
<author>Me</author>
<lastUpdate>2/1/1999</lastUpdate>
<Home>--------------------</Home>
<About>--------------------</About>
<Contact>------------------</Contact>
</Pages>
только возвращенного авторского элемента, который против моих целей (Чтобы захватить весь элемент между страницами и домом. это: авторское право, автор, lastUpdate и весь дом). или я делаю это неправильно?
public function fetchAsArray($pathToRecord, $conversionOption = array()) {
if($pathToRecord == null){
$this->Err['code'] = ERR_EMPTY_XPATH_QUERY;
$this->Err['msg'] = " Specified path to an xml file is non-existent ";
return false;
}
$xml = simplexml_import_dom($this->xmlObj);
$result = $xml->xpath($pathToRecord); //unknown node handle
if ($result === false) {
$this->parseError(); //To return xml Error code
return false ;
}
if (empty($result)) {
return NO_RECORD_FOUND;
}
return $this->strToArray($result[0]->saveXML()); //strToArray() is here: https://gist.github.com/laiello/8189351
}
/*
inside myXMLManager::fetchAsArray(), i did this:
foreach($result as $val) {echo $xml->saveXML($val);}
returned Error was, Warning: SimpleXMLElement::saveXML(): failed to open stream: Invalid argument in
lib\myXMLManager.php on line 205.
next, changing $result to result[0] in the same foreach returned null.
lastly, just doing var_dump($result[0]); returned null, while
var_dump($result) returned:
array (size=4)
0 =>
object(SimpleXMLElement)[8]
1 =>
object(SimpleXMLElement)[9]
2 =>
object(SimpleXMLElement)[10]
3 =>
object(SimpleXMLElement)[11]
null
whats' wrong ? or could it be from the call to strToArray() henceforth ?
*/
Как вы проверки повторно развернутый узел узлов? Какой двигатель XPathe вы используете? На моей стороне ваш запрос вернул имена 'copyright',' author', 'lastUpdate' и' Home' именно так, как ожидалось. (oh, и ваш запрос может быть немного короче: '// Страницы/* [self :: Home или следующий-sibling :: Home]') –
Ваш XPath возвращает авторские права, автор, lastUpdate и Home: http: // www.utilities-online.info/xpath/?save=3dfef61e-3bfc-446d-b8ad-8712434a1d28-xpath – unutbu
@OsagieOdigie Возможно, вы показываете код, чем в третий раз, создаете тот же вопрос. Этот путь в порядке, проблема в реализации – splash58