2010-06-14 89 views
5

XML標籤的ID我是有下面的XML文件閱讀PHP

<?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 &amp; Umwandlung|Altsystem Dokumentation|Daten Umwandlung &amp; Migration|Erstellen von Datenbeschreibungsverzeichnis|System- &amp; Anwendungs Support|Projekt Management &amp; Planunng|Personal Erweiterung|Projekt Ausgliederung|Mitarbeiter Ausbildung|Technologie|Intersystems Caché|M/MUMPS|Zusätzliche Technologien|Methodologie|Feedback|~! 
    </Message> 
</MsgFile> 
在這個XML文件,我需要使用標籤識別來獲取內容

。當我輸入'TopMakeHomepage'時,我需要的輸出是'Mache 4W Consulting Webseite zu deiner Starseite!'。 ... 請幫我找出這個。在此先感謝

回答

4

使用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'); 
} 
4

隨着DOM extension它應該是這樣的:

$dom = new DOMDocument; 
$dom->validateOnParse = TRUE; 
$dom->loadXML($xmlString); // or use ->load('file.xml') 
$node = $dom->getElementById('foo'); 
echo $node->nodeValue; 

查看


如果它不與getElementById工作(如果DTD不知道id屬性通常只發生),你仍然可以使用XPath做查詢:

$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('//Message[@id = "foo"]'); 
foreach($nodes as $node) { 
    echo $node->nodeValue; 
} 

getElementById,一個XPath query總是返回DOMNodeList。如果查詢沒有找到任何節點,它將爲空。


如果ID是一個真正的XML ID,您也可以使用id()函數中的XPath

$xpath = new DOMXPath($dom); 
$nodes = $xpath->query('id("foo")'); 
foreach($nodes as $node) { 
    echo $node->nodeValue; 
} 

Simplify PHP DOM XML parsing - how?有關XML ID的更多細節。

2

對於SimpleXML的這應該做的伎倆:

$xml = simplexml_load_file($xmlFileLoc); 
foreach ($xml->Message as $msg) 
{ 
    echo $msg['Id']; 
}