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-&gt;名称为$ name)
to foreach($ xml-&gt; lesson-&gt; name as $ name)
所以我得到了属性的值。但现在我不知道如何获得孩子们的价值。 我试过这个:$ xml-&gt; lesson-&gt; children()
打印children()
已解决:$ text = $ xml-&gt; lesson-&gt; children(); echo $ text;
问题是:我在其他代码中使用utf-8但没有更改它。
答案 0 :(得分:1)
编辑:此部分与问题拼写错误有关。 如果您直接从编辑它的位置复制xml,则部分问题可能是格式错误。您有一个空缺<lessons>
,但您似乎错误地尝试使用</lesson>
关闭它。 击>
此外,根据您的根节点设置,->name
可能是也可能不是$ xml对象的子节点。你可以发布一个var_dump()
并获得一些线索吗?
答案 1 :(得分:1)
我认为,你的xml存在一些问题。
- &GT;您必须正确关闭课程标记。因为您输入了</lesson>
(请参阅最后一行)而不是</lessons>
。如果您启动任何标记,则在关闭时应使用相同的标记名称。
您可以使用此代码从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);
?>
这里你将获得数组中的所有内容。所以你可以根据你的要求获取。