首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getElementsByTagName,使用多个值从nodeValue检索特定的nodeValue。

getElementsByTagName,使用多个值从nodeValue检索特定的nodeValue。
EN

Stack Overflow用户
提问于 2017-04-12 02:22:45
回答 1查看 277关注 0票数 1

我的XML文件如下所示:

代码语言:javascript
复制
<Charge ID="01010101">

    <Type>SHIPPING</Type>

    <Description>Shipping</Description>

    <Amount>8.9500</Amount>

</Charge>

<Charge ID="10101010">

    <Type>TAX</Type>

    <Description>Sales Tax</Description>

    <Amount>0.0000</Amount>

</Charge>

我可以用这个做一个数组

代码语言:javascript
复制
$getcharge = $doc->getElementsByTagName("Charge");

$array = array();
foreach ($getcharge as $node) {
$array[] = $node;
}

使用print_r,我可以看到nodeValue是这样构造的

代码语言:javascript
复制
[nodeValue] => 

    SHIPPING

    Shipping

    8.9500

按照同样的思路,我可以使用以下方法从这些nodeValues生成一个数组

代码语言:javascript
复制
foreach ($doc->getElementsByTagName("Charge") as $values) { {
    $result[] = $values->nodeValue;
}
}

输出是

代码语言:javascript
复制
Array
(
    [0] => 

        SHIPPING

        Shipping

        8.9500


    [1] => 

        TAX

        Sales Tax

        0.0000


)

这些子节点使我感到困惑,因为它们不在单个nodeValue中,如数组中所示。事实上,它们都是一个nodeValue。

我所要做的就是在Charge上循环,并将<Type></Type><Amount></Amount>放入变量中。

如何在具有多个属性的TypeAmount中获得nodeValue的单个实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-12 02:37:49

要获得这些费用中的类型、数量、描述批次,您可以使用$values作为上下文,也可以再次使用->getElementsByTagName方法。示例:

代码语言:javascript
复制
foreach ($doc->getElementsByTagName("Charge") as $values) {
    // $values as each `Charge`
    $result[] = array(
        'id' => $values->getAttribute('ID'),
        'type' => $values->getElementsByTagName('Type')->item(0)->nodeValue,
        'description' => $values->getElementsByTagName('Description')->item(0)->nodeValue,
        'amount' => $values->getElementsByTagName('Amount')->item(0)->nodeValue,
    );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43359136

复制
相关文章

相似问题

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