PHP负荷不希望从XML文件中的元素
问题描述:
我wan't使用此功能从我的XML文件中加载一些数据:PHP负荷不希望从XML文件中的元素
public function getElements()
{
$elements = array();
$element = $this->documentElement->getElementsByTagName('elements')->item(0);
// checks if it has any immunities
if(isset($element))
{
// read all immunities
foreach($element->getElementsByTagName('element') as $v)
{
$v = $v->attributes->item(0);
// checks if immunity is set
if($v->nodeValue > 0)
{
$elements[$v->nodeName] = $v->nodeValue;
}
}
}
return $elements;
}
我wan't加载,从我的XML文件中的元素:
<elements>
<element physicalPercent="10"/>
<element icePercent="10"/>
<element holyPercent="-10"/>
</elements>
我不想只加载元素节点名称和节点值。
得到这个代码在我的查询循环:
$elements = $monster->getElements();
$elN = 0;
$elC = count($elements);
if(!empty($elements)) {
foreach($elements as $element => $value) {
$elN++;
$elements_string .= $element . ":".$value;
if($elC != $elN)
$elements_string .= ", ";
}
}
最后 - $ elements_string变量的输出是错误的:
earthPercent:50, holyPercent:50, firePercent:15, energyPercent:5, physicalPercent:25, icePercent:30, deathPercent:30firePercent:20, earthPercent:75firePercent:20, earthPercent:75firePercent:20, earthPercent:75physicalPercent:70, holyPercent:20, deathPerce
它应该而返回:
physicalPercent:10, icePercent:10, holyPercent:-10
你能再帮我一次吗?:)
谢谢你提前。
答
嘛XML的解析器不会神奇地知道你想要加载哪些元素,哪些不会 - 你必须自己过滤这个元素。然后,您必须决定在您发布的getElements
-函数中或在您的“查询循环”中筛选期望的元素,就像您称之为的那样。
getElements
getElements
必须返回所有元素?那么你应该将if($v->nodeValue > 0)
更改为if(!empty($v->nodeValue))
之类的东西,否则你不会得到“holyPercent”值,因为这是负值(旧的表达式会变成false)。
然后,只需选择您所需的元素:
foreach($elements as $element => $value) {
if(in_array($element, array("physicalPercent", "icePercent", "holyPercent"))) {
$elN++;
$elements_string .= $element . ":".$value;
if($elC != $elN)
$elements_string .= ", ";
}
}
答
刚:
$xml = new SimpleXMLElement($xmlfile);
然后:
for($i=1;$i<Count($xml->elements);$i++)
echo $xml->elements[$i][0];
如果它与[0],通常我使用的作品没有尝试:
echo $xml->elements[$i]['attributename'];
+0
我知道。问题是我想插入$ elements_string变量的属性应该是针对每个数据的,现在它只计算每个循环的数据。 – Lucas
请将代码添加到您的问题,实际上是很重要的:如何/你在哪里调用该函数?你传递给这个函数的实际数据是什么?代码仅执行您在其中编码的内容,但您并未显示传递给该函数的所有数据。请将您的问题发布的代码降至最低。 – hakre