如何读取我不知道的随机/动态xml标记名


How to read the randomly/dynamic xml tag name that i don't know?

我想执行如下xml数据交换:

传入的xml数据有一些标签,我不知道标签的名称。

我可以在不知道标签名称的情况下读取这些标签吗?另外,我怎么能得到标签名称作为数据属性?

例如

:我想看不同病人的病历。每个病人都有不同的疾病。如"心脏病"、"癌症"。

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

我以前不知道这两个标签。但我想读取标签名称并呈现它。最后,我可以得到数据:心脏病:严重癌症正常:

可以,例如使用Simple XML:

$xml = new SimpleXMLElement($fileName, NULL, true);
foreach ($xml->children() as $child)
{
    print child->getName();
    foreach ($child->attributes() as $attribute)
    {
        print $attribute.', ';
    }
}

嗯,我觉得我应该首先警告您,空白并不构成有效的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

我建议您将XML格式化为另一种格式。用一种你知道的方式。像这样:

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

然后您可以使用您的编程语言(以PHP为例)中可用的所有解析器。