
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标签值,怎么做,谢谢 展开
<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标签值,怎么做,谢谢 展开
3个回答
展开全部
$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)
然后用
$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)
展开全部
其实你只要改一行,不,是一个变量名就好了
$name = $names->item(0)->nodeValue;
改成
$name[] = $names->item(0)->nodeValue;
这样就可以在循环结束后调用$name这个数组,第一个元素是$name[0],第二个是$name[1],以此类推
$name = $names->item(0)->nodeValue;
改成
$name[] = $names->item(0)->nodeValue;
这样就可以在循环结束后调用$name这个数组,第一个元素是$name[0],第二个是$name[1],以此类推
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<?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>";
}
?>
$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>";
}
?>
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询