php解析xml

XML字符如下:不是引用的xml文件,通过提交的字符串,格式为xml格式<members><member><name>aaa</name></member><member... XML字符如下:不是引用的xml文件,通过提交的字符串,格式为xml格式
<members>
<member>
<name>aaa</name>
</member>
<member>
<name>bbb</name>
</member>
<member>
<name>ccc</name>
</member>
<member>
<name>ddd</name>
</member>
</members>

<members>
<member>
<name>1111</name>
</member>
<member>
<name>222</name>
</member>
<member>
<name>333</name>
</member>
<member>
<name>4444</name>
</member>
</members>

程序如下:

$members_list = $doc->getElementsByTagName("member");
foreach($members_list as $member_list){
$names = $member_list->getElementsByTagName("name");
$name = $names->item(0)->nodeValue;

$classs = $member_list->getElementsByTagName("class");
$class = $classs->item(0)->nodeValue;

$points = $member_list->getElementsByTagName("point");
$point = $points->item(0)->nodeValue;

echo "<table><tr><td width=300>$name</td><td width=300>$class</td><td width=300>$point</td></tr></table>";

}

结果出来是aaa bbb ccc ddd 111 222 333 444

问题是,我只想列出第一个members的标签name值,但第二个也出来了,请问我如果想指定列出第一个members或者第二个members标签值,怎么做,谢谢
展开
 我来答
soiha_891
2009-05-20 · TA获得超过743个赞
知道小有建树答主
回答量:222
采纳率:100%
帮助的人:123万
展开全部
$members_list = $doc->getElementsByTagName("member");
然后用
$member = $members_list->item($i);(这样就可以选择特定的标签,$i为你所需要的标签序列,从0开始算的,需要第一个就用$i=0第二个用$i=1)
用item是选择标签序号,后面的属性有nodeValue(节点值)和nodeName(节点名),foreach实际上是从item(0)一直搜索到最后一个,在$member = $members_list->item($i);可用通过$member->length可以返回标签个数属性(就是有几个member)
reficull
2009-05-10 · TA获得超过661个赞
知道小有建树答主
回答量:522
采纳率:0%
帮助的人:341万
展开全部
其实你只要改一行,不,是一个变量名就好了

$name = $names->item(0)->nodeValue;
改成
$name[] = $names->item(0)->nodeValue;

这样就可以在循环结束后调用$name这个数组,第一个元素是$name[0],第二个是$name[1],以此类推
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
terrymayx
推荐于2016-10-19 · TA获得超过464个赞
知道小有建树答主
回答量:944
采纳率:0%
帮助的人:793万
展开全部
<?php
$xmlStr ='
<root>
<members>
<member>
<name>aaa</name>
</member>
<member>
<name>bbb</name>
</member>
<member>
<name>ccc</name>
</member>
<member>
<name>ddd</name>
</member>
</members>
<members>
<member>
<name>11</name>
</member>
<member>
<name>22</name>
</member>
<member>
<name>33</name>
</member>
<member>
<name>44</name>
</member>
</members>
</root>
';

$dom = new DOMDocument('1.0');
$dom ->loadXML($xmlStr);
$xml = simplexml_import_dom($dom);

echo $xml ->members[0]->member[0]->name; // aaa

echo $xml ->members[1]->member[0]->name; // 111
echo "<p>";
/**
循环列出 第一个 members 的 name;
**/
foreach($xml ->members[0] as $v)
{
echo $v->name."<br>";
}
?>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式