php DomDocument + прямой доступ к элементу xml - PullRequest
0 голосов
/ 16 декабря 2011

Может ли кто-нибудь посоветовать самый быстрый и наименее ресурсоемкий метод, с помощью которого я могу узнать, существует ли «Имя столбца = Ошибка», пожалуйста?

Я не хочу анализировать документ, а просто проверю, существуют ли элементы.

Заранее спасибо,

<?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 ]

2 голосов
/ 16 декабря 2011

Как уже упоминали другие, наименее ресурсоемким будет простой вызов 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 голосов
/ 16 декабря 2011

Вы когда-нибудь думали просто использовать strpos?

$xml= //xml data

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

edit: добавлено !==false, чтобы учесть ситуацию с индексом 0 (которая в любом случае не должна происходить здесь)

...