Могу ли я получить структуру файлов XML, не просматривая имена элементов самостоятельно?

Используя PHP, я хотел бы иметь возможность открыть файл XML и получить его структуру, не зная уже ничего о структуре. Это возможно?

Я использовал XMLReader до сих пор, но я анализирую самые разные структуры, поэтому требуется некоторое время, чтобы просмотреть каждый файл вручную и определить структуру.

Мне нужно было бы открыть только первый родительский узел, так как каждый последующий узел будет одинаковым.

e.g.

<name>
<first></first>
<second></second>
</name>

Я хотел бы иметь возможность идентифицировать эту структуру, не просматривая файл вручную.

Рад использовать другие библиотеки, кроме XMLReader, но нужно придерживаться PHP.

Спасибо!


person Franco    schedule 02.02.2012    source источник
comment
Может быть, вы говорите о DOM?   -  person nfechner    schedule 02.02.2012
comment
Чего вы пытаетесь достичь? Что вы подразумеваете под идентификацией? Конечно, вы можете читать имена элементов, но действительно ли это вам нужно?   -  person Evert    schedule 02.02.2012
comment
Если есть хороший DTD или XSD для XML, тогда да! Но многие XML-файлы в наши дни не ссылаются на какой-либо файл определения для своей структуры, они просто составлены специально для чего-то похожего на XML.   -  person Mark Baker    schedule 02.02.2012


Ответы (1)


DOMDocument должен уметь это делать.

$dom = new DOMDocument();
$dom->loadHTML($xml_data);
/* @var $names DOMNodeList */
$names = $dom->getElementsByTagName('name');
for($i=0;$i<$names->length;$i++){
    $node = $names->item($i);
    if($node->nodeName=='first'){
        $first_name = $node->nodeValue;  // store this
    }elseif($node->nodeName=='second'){
        $second_name = $node->nodeValue; // store this
    }
}

Убедитесь, что это допустимые файлы XML.

person Shiplu Mokaddim    schedule 02.02.2012