这是我的xml。
<episodes>
<episode>
<series_name>Test</series_name>
<season_number>1</season_number>
<episode_number>10</episode_number>
<episodes_in_season>12</episodes_in_season>
<notes>Testing</notes>
</episode>
</episodes>
我想要做的是获取季节/剧集编号的数量,然后从该xml增加或减少i,然后将其保存回来(我的页面上有+/-按钮,用于season_number和episode_number,我正在使用`$ _post for the button)。
到目前为止,这是我的代码。
$xmlDoc = new DOMDocument();
$xmlDoc->load($user);
$xpath = new DOMXpath($xmlDoc);
$test = $xmlDoc->getElementsByTagName('episode')->item(0);
// example for episode number increment / decrement (what i think)
$number = $test->childNodes->item(2);
$increment = $number + 1;
$decrement = $number - 1; // example
我被困在这里并且我没有完成它,因为我无法看到$number
中发生了什么,因为我收到此错误类DOMElement的对象无法转换为int。< /强>
我也用(int)$number = $test->childNodes->item(2);
尝试过,但没有运气。而且我也是php的初学者,所以我可能会把这件事弄错了。
修改
$eNumber = $xpath->query('episode_number', 'episode')->item(0);
$esNumber = $xpath->query('episodes_in_season', 'episode')->item(0);
if ($eNumber == $esNumber)
{
echo "You have reached the max episode in season";
}
else
{
$eNumber->nodeValue++;
}
它总是说我已经达到最大插曲
答案 0 :(得分:2)
您使用的DOMNodelist::item()方法不返回值(既不是字符串也不是整数),它返回一个节点:
DOMNode DOMNodelist::item ( int $index )
因此(假设您的Xpath查询正确),您需要访问其nodeValue属性以读取该数字。然后,如果您转换为整数,请确保在之前执行此操作,并将结果分配给变量:
$number = (int)$test->childNodes->item(2)->nodeValue;
...虽然通常没有必要,因为PHP会在你做数学后立即为你做这件事:
$foo = '33';
var_dump($foo); // string(2) "33"
$foo++;
var_dump($foo); // int(34)
答案 1 :(得分:2)
如果$number
是与episode_number对应的DOMElement
,请执行以下操作以增加:
$number->nodeValue++;
顺便说一句,我建议使用XPath来代替$number = $test->childNodes->item(2);
来代替正确的元素:
$number = $xpath->query('episode_number', $test)->item(0);