Intereting Posts
Разрыв страницы в Html2Pdf Как установить ограничение памяти в файле my.cnf Set_select () не работает над CodeIgniter PHP regexp анализирует HTML Проблема API BigCommerce со значением страницы PDO не может сравнивать mysql ENUM с использованием целых чисел в подготовленных операциях Как отображать специальные символы в PHP PHP нет ждать sem_acquire? Получение данных из базы данных MySQL с использованием PHP, отображение ее в форме для редактирования Почему я не могу использовать intergers как индекс в массиве PHP $ _SESSION? Как избежать уведомления PHP «Неопределенное смещение: 0» без проверки каждого поля массива Прокрутка через вложенный массив для генерации таблиц разной длины загрузка файла в куски с помощью html5 Где я могу найти алгоритм, используемый для записи каждой встроенной функции PHP? Стандарт веб-платежей Paypal – возврат средств. Могут ли они быть сделаны через Api?

Как читать тег <abc: xyz> xml с помощью php?

Используя мой код ниже, я могу легко прочитать <abcxyz> xml. но как я могу прочитать данные между тегами <abc:xyz> </abc:xml> xml .. xml с помощью php.pls help ….

мой пример кода php …

  $objDOM->load("abc.xml"); $note = $objDOM->getElementsByTagName("note"); foreach( $note as $value ) { $tasks = $value->getElementsByTagName("tasks"); $task = $tasks->item(0)->nodeValue; $details = $value->getElementsByTagName("details"); $detail = $details->item(0)->nodeValue; echo "$task :: $detail<br>"; } 

Мой пример кода XML:

 <mynotes> <note> <tasks>Task 1</tasks> <details>Detail 1</details> </note> <abc:xyz> Cannot Read the XML data between this tag</abc:xyz> </mynotes> 

Pls направляет меня …

благодаря
Riad

abc:xyz означает, что элемент имеет имя xyz , а пространство имен обозначено abc . Часть пространства имен фактически является сокращением для URI, который обычно также указывается в файле XML. Например, вы можете увидеть это:

xmlns:abc="http://www.abc.com/xml"

В этом случае элементы, которые имеют abc перед двоеточием, находятся в пространстве имен http://www.abc.com/xml .

Чтобы получить этот элемент, вам нужно использовать getElementsByTagNameNS и передать http://www.abc.com/xml как пространство имен.

вам нужен DOMDocument :: getElementsByTagNameNS

Как и другие методы, предлагаемый DOMDocument::getElementsByTagNameNS , вот рабочий код (включая чтение внутреннего содержимого), предполагая, что у вас также есть какое-либо объявление пространства имен (например, <abc:response xmlns:abc="http://api-url"> ), как указано @Sjoerd –

 $xml = '<?xml version="1.0"?> <abc:response xmlns:abc="http://api-url"> <mynotes> <note> <tasks>Task 1</tasks> <details>Detail 1</details> </note> <abc:xyz> Can Read the XML data between this tag!!</abc:xyz> </mynotes> </abc:response>'; $dom = new DOMDocument; // load the XML string defined above $dom->loadXML($xml); foreach ($dom->getElementsByTagNameNS('http://api-url', '*') as $element) { //echo 'see - local name: ', $element->localName, ', prefix: ', $element->prefix, "\n"; if($element->localName == "xyz") echo get_inner_html($element); } function get_inner_html( $node ) { $innerHTML= ''; $children = $node->childNodes; foreach ($children as $child) { $innerHTML .= $child->ownerDocument->saveXML( $child ); } return $innerHTML; } 

Вот рабочая ссылка, показывающая выход.

Обратите внимание, что я только что обернул ваш xml внутри этого –

  '<?xml version="1.0"?> <abc:response xmlns:abc="http://api-url">' .$yourxml .'</abc:response>'; 

Я использовал решение, которое я получил отсюда. PHP DOM get nodevalue html? (без снятия тегов) … в эти дни была похожа проблема.