Как прочитать случайное / динамическое имя тега XML, которое я не знаю? - PullRequest
0 голосов
/ 15 августа 2011

Я хотел бы выполнить обмен данными XML, как показано ниже:

Входящие данные XML содержат некоторые теги, которые я не знаю о названии тега.

Могу ли я прочитать этот тег беззная имя тега?Также, как я могу получить имя тега в качестве атрибута данных?

Например: я хочу прочитать разные записи пациентов.У каждого пациента разные заболевания.Такие как «Болезнь сердца», «рак».

<heart disease>serious</heart disease>
<cancer>normal</cancer>

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

Ответы [ 4 ]

1 голос
/ 15 августа 2011

Да, вы можете, например, с помощью простого XML:

$xml = new SimpleXMLElement($fileName, NULL, true);

foreach ($xml->children() as $child)
{
    print child->getName();

    foreach ($child->attributes() as $attribute)
    {
        print $attribute.', ';
    }
}
1 голос
/ 15 августа 2011

Ну, я чувствую, что сначала должен предупредить вас, что пробел не подходит для допустимых тегов XML. Вы можете добавить <white space>STUFF</white space>, но это будет читаться как тег <white>. С более щадящим интерпретатором вы можете обнаружить, что он имеет истинный логический атрибут space. Заменить \s на -.

С DOMDocument, чтобы читать дочерние узлы, ничего не зная о них, кроме того факта, что они являются дочерними узлами, вы должны использовать свойство с соответствующим именем childNodes:

$doc = new DOMDocument();
$rand = rand(1,100);
$doc->loadXML('<root><i'.$rand.'><cannot-know-i /></i'.$rand.'></root>');
foreach( $doc->documentElement->childNodes as $node )
    print $node->nodeName; // i$rand
0 голосов
/ 15 августа 2011

Я предлагаю вам отформатировать XML в другой формат.В формате вы знаете.Примерно так:

<?xml version="1.0" ?> 
    <Information>
        <Disease target="heart" />
        <Cancer type="normal" />
    </Information>
</xml>

Тогда вы можете использовать любой анализатор, доступный на вашем языке программирования (в вашем случае PHP).

0 голосов
/ 15 августа 2011

Думаю, эта ссылка поможет вам.Визит http://www.php.net/manual/en/class.simplexmlelement.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...