я, имеют следующий XML-файл
<?xml version="1.0" encoding="iso-8859-1"?>
<Message Id="Language">German</Message>
<Message Id="LangEnglish">German</Message>
<Message Id="TopMakeHomepage">
Mache 4W Consulting Webseite zu deiner Starseite!
</Message>
<Message Id="TopLinkEmpSec">
4W Mitarbeiter
</Message>
<Message Id="TopLinkFeedback">
Feedback
</Message>
<Message Id="TopLinkSiteMap">
Site Map
</Message>
<Message Id="TopLinkContactUs">
Kontakt
</Message>
<Message Id="TopSetLangEn">
ins Englische
</Message>
<Message Id="TopSetLangDe">
ins Deutsche
</Message>
<Message Id="TopSetLangEs">
ins Spanische
</Message>
<Message Id="MenuLinks">
!~|4W Starseite|Company|Über uns|Kontakt|4W anschließen|Services|Kunden Software Entwicklung|Altsystem Neugestalltung & Umwandlung|Altsystem Dokumentation|Daten Umwandlung & Migration|Erstellen von Datenbeschreibungsverzeichnis|System- & Anwendungs Support|Projekt Management & Planunng|Personal Erweiterung|Projekt Ausgliederung|Mitarbeiter Ausbildung|Technologie|Intersystems Caché|M / MUMPS|Zusätzliche Technologien|Methodologie|Feedback|~!
</Message>
</MsgFile>
в этом XML-файле я должен выбрать содержание с помощью tagid., в чем точно я нуждаюсь, когда я ввел 'TopMakeHomepage', я должен произвести как 'Mache Консалтинг на 4 Вт с денье Webseite zu Starseite!'... Помогите мне узнать это.Заранее спасибо
С расширением DOM это должно быть примерно так:
$dom = new DOMDocument;
$dom->validateOnParse = TRUE;
$dom->loadXML($xmlString); // or use ->load('file.xml')
$node = $dom->getElementById('foo');
echo $node->nodeValue;
См. Руководство по
DOMDocument :: getElementById
- Ищет элемент с определенным идентификатором Если он не работает с getElementById
(что обычно происходит только в том случае, если DTD не знает атрибут id), вы все равно можете использовать XPath для выполнения запроса:
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('//Message[@id = "foo"]');
foreach($nodes as $node) {
echo $node->nodeValue;
}
В отличие от getElementById
, запрос XPath всегда возвращает DOMNodeList
. Он будет пустым, если запрос не обнаружил никаких узлов.
Если идентификатор является настоящим идентификатором XML, вы также можете использовать функцию id () в XPath
$xpath = new DOMXPath($dom);
$nodes = $xpath->query('id("foo")');
foreach($nodes as $node) {
echo $node->nodeValue;
}
См. Упростить синтаксический анализ PHP DOM XML - как? для получения дополнительных сведений об идентификаторах XML.
Используйте SimpleXML :
$xml = simplexml_load_file($grabUrl);
foreach ($xml->Message as $message) {
echo $message->attributes()->Id.'<br />';
}
Или используйте XMLReader , с помощью которого вы можете пропустить утечки памяти при обработке больших XML-файлов.
$xml = new XMLReader;
$xml->open($grabUrl);
while ($xml->read()) {
if ($xml->nodeType === XMLReader::ELEMENT && $xml->name == 'Message')
echo $xml->getAttribute('Id');
}
Для SimpleXML это должно помочь:
$xml = simplexml_load_file($xmlFileLoc);
foreach ($xml->Message as $msg)
{
echo $msg['Id'];
}