【问题标题】:Xml PHP Get attributes and its children valueXML PHP 获取属性及其子值
【发布时间】:2012-10-16 08:05:23
【问题描述】:

XML:

<?xml version="1.0" encoding="ISO-8859-1"?>
<lessons>
    <lesson level="1" course="2">
                 <name type="Dog" category="Animals">Dog name</name>
          </lesson>
</lessons>

我想得到这样保存的值:

$type = "Dog";
$category = "Animals";
$name = "dog name";

这就是我所做的:

    foreach($xml->name as $name){
        $type = $name['type'];
        $category = $name['category'];

        echo "Type: $type Category: $category<br>";
        // AND TO get the text, haven't figuered it out yet.. <name ..="" ..="">text</name>
    }

但它不起作用。不要得到任何错误或任何输出。有什么想法吗?

编辑: 好的。我改变了 foreach($xml->name as $name)

to foreach($xml->lesson->name as $name)

所以我得到了属性的值。但是现在我不知道如何获得孩子的价值。 我试过这个:$xml->lesson->children()

它打印 children()

已解决:$text = $xml->lesson->children(); 回声$文本;

问题是:我在其他代码中使用了 utf-8,但没有更改它。

【问题讨论】:

  • @MuthuKumaran 我认为这是合法暗示的问题之一。简短的代码示例,它没有输出任何内容,这是怎么回事?
  • 可能是因为$xml 指的是&lt;lessons&gt;,而不是&lt;lesson&gt;
  • 可能是这样,解决方案是什么?

标签: php xml children


【解决方案1】:

编辑:这部分与问题错字有关。 如果你直接从你编辑的地方复制了你的 xml,那么问题的一部分可能是它格式错误。您有一个开口&lt;lessons&gt;,但您似乎错误地尝试使用&lt;/lesson&gt; 关闭它。

另外,根据您的根节点设置,-&gt;name 可能是也可能不是 $xml 对象的子对象。你能发一个var_dump()它并获得一些线索吗?

【讨论】:

  • 很抱歉它被关闭了只是我在这里写错了。
  • @Kilise 那var_dump() 怎么样? :)
  • 解决了。应该是:foreach($xml->lesson->name as $name)
【解决方案2】:

我认为,您的 xml 中存在一些问题。

-> 你必须正确关闭课程标签。因为你输入了&lt;/lesson&gt;(见最后一行)而不是&lt;/lessons&gt;。如果你开始任何标签,你应该在关闭时使用相同的标签名称..

您可以使用此代码从您的 xml 中提取值,

<?php

$xmlstring='<lessons>
    <lesson level="1" course="2">
                 <name type="Dog" category="Animals">Dog name</name>
          </lesson>
</lessons>';

$xml = simplexml_load_string($xmlstring);
$ATTRIBUTE=array();
$counter = 0;
foreach($xml->children() as $key=>$child)
  {
    $counter++;
    $ATTRIBUTE[$counter]["type"]=$child->name->attributes()->type;
    $ATTRIBUTE[$counter]["category"]=$child->name->attributes()->category;
    $ATTRIBUTE[$counter]["value"]= $child->name;
  }

echo "<pre>";
print_r($ATTRIBUTE);
?>

在这里,您将得到数组中的所有内容。所以你可以根据你的要求来获取。

【讨论】:

    猜你喜欢
    • 2011-06-22
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2023-03-13
    • 2021-04-30
    • 2022-01-13
    相关资源
    最近更新 更多