ilyubayev
@ilyubayev
Software Engineer

Как обратиться к тегу в дереве XML с помощью SimpleXML в PHP?

Всем привет!
Пытаюсь получить строки из XML файла и записать их в массив с помощью SimpleXML на PHP.

XML открываю, парсю, используя пространство имен, но остановился на, казалось бы, легком деле - не могу обратиться к тегу, в котором хранится строка.

Собственно вопрос: как мне обратиться к тегу, в котором находится строка "Это третий ответ на вопрос номер 1" и записать ее в массив?
Может быть, кто-нибудь подскажет путь к тегу?

Код document.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 wp14">

<w:body>
<w:tbl>
	<w:tblPr>
		<w:tblStyle w:val="a3"/>
		<w:tblW w:w="0" w:type="auto"/>
		<w:tblLook w:val="04A0" w:firstRow="1" w:lastRow="0" w:firstColumn="1" w:lastColumn="0" w:noHBand="0" w:noVBand="1"/>
	</w:tblPr>
	<w:tblGrid>
		<w:gridCol w:w="1595"/>
		<w:gridCol w:w="1595"/>
		<w:gridCol w:w="1595"/>
		<w:gridCol w:w="1595"/>
		<w:gridCol w:w="1595"/>
		<w:gridCol w:w="1596"/>
	</w:tblGrid>
	<w:tr w:rsidR="00EE7346" w:rsidTr="00EE7346">
		<w:tc>
			<w:tcPr><w:tcW w:w="1595" w:type="dxa"/></w:tcPr>
			<w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346">
				<w:r>
					<w:t>Вопрос номер 1</w:t>
				</w:r>
			</w:p>
		</w:tc>
		<w:tc>
			<w:tcPr><w:tcW w:w="1595" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это ответ на вопрос номер 1</w:t></w:r></w:p>
		</w:tc>
		<w:tc>
			<w:tcPr><w:tcW w:w="1595" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это второй ответ на вопрос номер 1</w:t></w:r></w:p>
		</w:tc>
			<w:tc><w:tcPr><w:tcW w:w="1595" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это третий ответ на вопрос номер 1</w:t></w:r></w:p>
		</w:tc>
		<w:tc>
			<w:tcPr><w:tcW w:w="1595" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это четвертый ответ на вопрос номер 1	</w:t></w:r></w:p>
		</w:tc>
		<w:tc>
			<w:tcPr><w:tcW w:w="1596" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это пятый ответ на вопрос номер 1</w:t></w:r></w:p>
		</w:tc>
	</w:tr>
	
	<w:tr w:rsidR="00EE7346" w:rsidTr="00EE7346">
		<w:tc>
			<w:tcPr>
				<w:tcW w:w="1595" w:type="dxa"/>
			</w:tcPr>
			<w:p w:rsidR="00EE7346" w:rsidRPr="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346">
				<w:r>
					<w:t>Вопрос номер 1</w:t>
				</w:r>
			</w:p>
		</w:tc>
		<w:tc>
			<w:tcPr>
				<w:tcW w:w="1595" w:type="dxa"/>
			</w:tcPr>
			<w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346">
				<w:r>
					<w:t>Это первый ответ на вопрос номер 2</w:t>
				</w:r>
			</w:p>
		</w:tc>
		<w:tc>
			<w:tcPr><w:tcW w:w="1595" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это второй ответ на вопрос номер 2</w:t></w:r><w:bookmarkStart w:id="0" w:name="_GoBack"/><w:bookmarkEnd w:id="0"/></w:p>
		</w:tc>
		<w:tc>
			<w:tcPr><w:tcW w:w="1595" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это третий ответ на вопрос номер 2</w:t></w:r></w:p></w:tc>
		<w:tc>
			<w:tcPr><w:tcW w:w="1595" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это четвертый ответ на вопрос номер 2</w:t></w:r></w:p>
		</w:tc>
		<w:tc>
			<w:tcPr><w:tcW w:w="1596" w:type="dxa"/></w:tcPr><w:p w:rsidR="00EE7346" w:rsidRDefault="00EE7346" w:rsidP="00EE7346"><w:r><w:t>Это пятый ответ на вопрос номер 2</w:t></w:r></w:p>
		</w:tc>
	</w:tr>
</w:tbl>

<w:p w:rsidR="000A6CF5" w:rsidRPr="00EE7346" w:rsidRDefault="000A6CF5" w:rsidP="00EE7346"/><w:sectPr w:rsidR="000A6CF5" w:rsidRPr="00EE7346"><w:pgSz w:w="11906" w:h="16838"/><w:pgMar w:top="1134" w:right="850" w:bottom="1134" w:left="1701" w:header="708" w:footer="708" w:gutter="0"/><w:cols w:space="708"/><w:docGrid w:linePitch="360"/></w:sectPr>
</w:body>
</w:document>

Код php
<?php
$doc = simplexml_load_file("document.xml"); // открываем файл
if ($doc === false) {
  echo 'Error while parsing the document';
  exit;
}

$namespaces = $doc->getNamespaces(true); 
$w = $doc->children($namespaces["w"]); //определяем пространство имен
	
var_dump($w); // получаем дамп

echo $w->body->tr[1]->tc[1]->p->r->t; // пытаемся получить строку <w:t>Вопрос номер 1</w:t> не получается
?>
  • Вопрос задан
  • 6347 просмотров
Решения вопроса 1
Смотреть дамп в данном случае сложно. Выводите себе по очереди пока не найдете что именно не проходит..

var_dump($w->body);
Если ок, то
var_dump($w->body->tr);
..
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы