2016-10-01 109 views
2

出於某種原因,SimpleXML不解析&lt;ADMIN&gt;PHP SimpleXML不解析<

我的XML文件的內容:

$xml = simplexml_load_file('http://localhost/test/xml.xml'); 

    echo "Recipient:". $xml['email-notification']['@attributes']['recipient']; 

輸出爲收件人: 「空白」

我怎樣才能使它從閱讀ADMIN,讀取XML文件

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE client-config SYSTEM "asigra_conf_windows.dtd"> 
<notifications> 
    <email-notification recipient="&lt;ADMIN&gt;"/> 
</notifications> 

代碼&lt;ADMIN&gt;

我在Apache和PHP 5.6上使用xampp。

+0

或整個'<ADMIN>' –

+0

$ XML->兒童()[0] - >屬性()[ '收件人'] – Andreas

+0

$ xml_string->兒童()[0 ] - > attributes()['recipient']顯示爲空白。如果我在Firefox中使用Inspect Element,我可以看到''。 –

回答

1

謝謝大家的幫助(特別是IMSoP,你對htmlspecialchars是正確的)。

我一直不成功的原因是因爲我強化了人看不懂手冊的刻板印象。

我只需花5分鐘看例子@http://php.net/manual/en/simplexml.examples-basic.php。它也解釋了爲什麼你不應該使用json_encode/decode。

對於其他文藝青年最愛的人,這裏是我現在使用的代碼的一些例子:

當我有XML,看起來像這樣:

<configuration> 
    <setup-config> 
     <account-name>Trump</account-name> 
    </setup-config> 
<configuration> 

$xml = simplexml_load_file('http://localhost/config.xml'); 

echo $xml->{'configuration'}->{'setup-config'}->{'account-name'}; 

 

當我看到像這樣的XML是:

<configuration> 
    <setup-config> 
     <user-info country-code="826"/> 
    </setup-config> 
<configuration> 

$xml = simplexml_load_file('http://localhost/config.xml'); 

echo $xml->{'configuration'}->{'setup-config'}->{'user-info'}['country-code']; 

 

當我有XML和HTML字符:

<configuration> 
    <defaults-config> 
     <def-notification name="&lt;ADMIN&gt;"/> 
    </defaults-config> 
</configuration> 

$xml = simplexml_load_file('http://localhost/config.xml'); 

echo htmlspecialchars($xml->{'configuration'}->{'defaults-config'}->{'def-notification'}['name']); 

 

迭代:

<configuration> 
    <roles-config> 
     <group-role role="administrator" name="Administrators" from="."/> 
     <group-role role="backup-operator" name="Backup Operators" from="."/> 
    </roles-config> 
</configuration> 

$xml = simplexml_load_file('http://localhost/config.xml'); 

foreach ($xml->{'configuration'}->{'roles-config'}->{'group-role'} as $grouproles => $groles) { 
    echo "<tr><td>group role name: ".$groles['name']."</td></tr>"; 
    echo "<tr><td>group role role: ".$groles['role']."</td></tr>"; 
    echo "<tr><td>group role role: ".$groles['from']."</td></tr>"; 
} 

 

簡單的存在性檢查:

<configuration> 
    <setup-config> 
     <account-name>Trump</account-name> 
    </setup-config> 
<configuration> 

$xml = simplexml_load_file('http://localhost/config.xml'); 

if(isset($xml->{'configuration'}->{'setup-config'}->{'account-name'})){ 
    echo $xml->{'configuration'}->{'setup-config'}->{'account-name'}; 
}