2011-12-16 2 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() 호출 될 것이라고 0 인덱스 상황 있도록 !==false 추가 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

0

당신은 단순히 strpos를 사용하는 생각?

$xml= //xml data 

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

편집 : (어쨌든 여기 일이 야해하는) 그 오류가 될 수 비록 다른 사람이 언급 한 것처럼