2011-12-16 119 views
0

任何人都可以建議最快,資源最少的方法,我可以看到'Column Name = Error'是否存在嗎?php DomDocument +直接訪問xml元素

我不想解析文檔,只是檢查元素是否存在。

由於提前,

<?xml version="1.0" encoding="UTF-8"?> 
<Table> 
<Columns Items="4"> 
<Column Name="Error" Type="String" /> 
<Column Name="Description" Type="String" /> 
<Column Name="Cause" Type="String" /> 
<Column Name="Resolution" Type="String" /> 
</Columns> 
<Rows Items="1"> 
<Row Error="2" Description="Unknown key" Cause="Unknown key" Resolution="Please check  the key is correct, it should be the in form AA11-AA11-AA11-AA11." /> 
</Rows> 
</Table> 

回答

2

正如其他人所提到的,最少的資源密集型的將是一個簡單的strpos()電話,儘管這受到錯誤如果XML的確切格式發生變化。全面的方法是使用DOM,那麼你可以嘗試一個xpath查詢...

$xml = '...' 
$dom = new DomDocument(); 
$dom->loadXML($xml); 
$xpath = new DOMXPath($dom); 

// returns NULL if no columns found with name="error" 
$err = $xpath->query('//Column[@Name="Error"]')->item(0); 

if ($err) { 
    // there is a column with attribute Name="Error" 
} 
+0

乾杯! – rix 2011-12-21 10:50:02

0

你有沒有想過簡單地使用strpos的?

$xml= //xml data 

if(strpos($xml,'<Column Name="Error"') !== false){ 
    // its been found 
} 

編輯:添加!==false以允許0指數的情況(這不應該在這裏反正發生)