【发布时间】:2014-04-06 16:34:39
【问题描述】:
<tle-type name="Channel" tag="47" mt="true">
<tle-field name="ChannelId" tag="1" type="String" minOccurs="1" maxOccurs="1">
Description 1.
</tle-field>
<tle-field name="resultCode" tag="2" enum="true" type="ChannelResult" minOccurs="1" maxOccurs="1">
Description 2.
</tle-field>
<tle-field name="jid" tag="3" type="String" minOccurs="0" maxOccurs="1">
Description 3.
</tle-field>
<tle-field name="thing" tag="4" type="String" minOccurs="0" maxOccurs="1">
Description 5.
</tle-field>
</tle-type>
上面是我正在处理的一段 XML。 'tle-type' 下的 'tag' 属性是唯一标识符,然后在它的子项中,'tle-field' 将是另一个 'tag' 属性。我本质上是在寻找一种方法来识别第一个 'tag' 'tle-type',然后从 'tle-field' 中创建一个 $attribute = "value",并在 $desc 中进行描述。
虽然我可以使用 tag="x" 提取 'tle-type' 属性,但我似乎无法在 tag = 'y' 的位置提取子属性。我可以打印所有属性。
foreach ($xml->getElementsByTagName('tle-type') as $tag) {
if($tag->getAttribute('tag') === '47') {
foreach ($tag->childNodes as $child ) {
foreach ($child->attributes as $t ) {
echo "<BR>".$t->nodeName." = ".$t->nodeValue;
}
}
}
}
通过上述,我最终得到警告:在第 4 行的 file.php 中为 foreach() 提供的参数无效:
foreach ($child->attributes as $t)
当然会显示属性名称和值,减去描述。我希望我已经解释过了...
任何帮助将不胜感激!
【问题讨论】:
-
我不确定输出应该是什么。你能举个例子吗?
标签: php xml domdocument children