首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以获取同名节点的值

可以获取同名节点的值
EN

Stack Overflow用户
提问于 2016-07-25 13:31:44
回答 1查看 366关注 0票数 0

伙计们,

我有以下xml代码:

代码语言:javascript
复制
<items>
<item type="boardgame" id="84876">
<versions>
<item type="boardgameversion" id="317166">
<link type="boardgameversion" id="84876" value="The Castles of Burgundy" inbound="true"/>
<name type="primary" sortindex="1" value="Chinese Edition"/>
<link type="boardgamepublisher" id="9068" value="Broadway Toys LTD"/>
<link type="language" id="2181" value="Chinese"/>
</item>

<item type="boardgameversion" id="269360">
<link type="boardgameversion" id="84876" value="The Castles of Burgundy" inbound="true"/>
<name type="primary" sortindex="1" value="Hobby World Russian first edition"/>
<link type="boardgamepublisher" id="18852" value="Hobby World"/>
<link type="boardgameartist" id="11886" value="Julien Delval"/>
<link type="boardgameartist" id="4959" value="Harald Lieske"/>
<link type="language" id="2202" value="Russian"/>
</item>

<item type="boardgameversion" id="141049">
<link type="boardgameversion" id="84876" value="The Castles of Burgundy" inbound="true"/>
<name type="primary" sortindex="1" value="Ravensburger English/French Edition"/>
<link type="boardgamepublisher" id="9" value="alea"/>
<link type="boardgamepublisher" id="34" value="Ravensburger Spieleverlag GmbH"/>
<link type="boardgameartist" id="11886" value="Julien Delval"/>
<link type="boardgameartist" id="4959" value="Harald Lieske"/>
<link type="language" id="2184" value="English"/>
<link type="language" id="2187" value="French"/>
</item>

<item type="boardgameversion" id="69303">
<link type="boardgameversion" id="84876" value="The Castles of Burgundy" inbound="true"/>
<name type="primary" sortindex="1" value="Ravensburger Multilingual First Edition"/>
<link type="boardgamepublisher" id="9" value="alea"/>
<link type="boardgamepublisher" id="34" value="Ravensburger Spieleverlag GmbH"/>
<link type="boardgameartist" id="11886" value="Julien Delval"/>
<link type="boardgameartist" id="4959" value="Harald Lieske"/>
<link type="language" id="2184" value="English"/>
<link type="language" id="2187" value="French"/>
<link type="language" id="2188" value="German"/>
</item>

<item type="boardgameversion" id="134173">
<link type="boardgameversion" id="84876" value="The Castles of Burgundy" inbound="true"/>
<name type="primary" sortindex="1" value="Ravensburger Multilingual Second Edition"/>
<link type="boardgamepublisher" id="9" value="alea"/>
<link type="boardgamepublisher" id="34" value="Ravensburger Spieleverlag GmbH"/>
<link type="boardgameartist" id="11886" value="Julien Delval"/>
<link type="boardgameartist" id="4959" value="Harald Lieske"/>
<link type="language" id="2184" value="English"/>
<link type="language" id="2187" value="French"/>
<link type="language" id="2188" value="German"/>
</item>
</versions>
</item>
</items>

我想得到每个版本项目的<link type="language"...>值。

我的php代码是:

代码语言:javascript
复制
$language = $xmlinfo2->item->versions->item;
$lang = $language->xpath('//link[@type="language"]');
$num = 1;

    foreach($language as $lang1) {
       echo $num . ". ";
         foreach ($lang as $lang2){
           $lang3 = $lang2->attributes();
           echo $lang3['value'] . ", ";
         }
         echo "<br>";
         $num++;
    }

其结果是(它为所有版本编写所有语言):

  1. 中文、俄文、英文、法文、英文、法文、德文、英文、法文、德文
  2. 中文、俄文、英文、法文、英文、法文、德文、英文、法文、德文
  3. 中文、俄文、英文、法文、英文、法文、德文、英文、法文、德文
  4. 中文、俄文、英文、法文、英文、法文、德文、英文、法文、德文
  5. 中文、俄文、英文、法文、英文、法文、德文、英文、法文、德文

如何更改我的php代码才能得到这个结果?

  1. 中国人
  2. 俄语
  3. 英文、法文
  4. 英语、法语、德语
  5. 英语、法语、德语

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-25 13:46:11

你这里有几个问题:

1)在xpath选择器开始时使用//意味着从文档中的anywhere获取这些元素。因此,每次循环时,您都会得到来自所有项目的所有语言的列表。

2)您的xpath()调用需要在循环中进行,否则它将无法在当前<item>的上下文中工作。

这样你就可以使用这样的东西:

代码语言:javascript
复制
foreach ($language as $lang1) {
    $lang = $lang1->xpath('link[@type="language"]');

    echo $num . ". ";

    foreach ($lang as $lang2){
        $lang3 = $lang2->attributes();
        echo $lang3['value'] . ", ";
    }

    echo "<br>";
    $num++;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38569165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档