[英]How to add new node in specific node on xml by php dom
我想將新節點插入到特定節點,但是我不知道該怎么做
number.xml
<numbers>
<number>1</number>
<number>2</number>
<number>3</number>
<number>4</number>
<number>5</number>
</numbers>
number.php
<?php
$xml = new DOMDocument();
$xml->formatOutput=true;
$xml -> load('number.xml');
$xml_subnumber = $xml->createElement("subNumber");
$xml_subnumber_text = $xml->createTextNode("3.3");
$xml_subnumber->appendChild($xml_subnumber_text);
//something here (I have no idea.)
$xml->save("number.xml") or die("Error");
?>
我希望xml文件看起來像這樣...
<numbers>
<number>1</number>
<number>2</number>
<number>3
<subNumber>3.3</subNumber>
</number>
<number>4</number>
<number>5</number>
</numbers>
您需要找到number
元素節點並將新節點附加到該節點。 這是XPath。 /numbers/number[3]
將返回第三個number
元素節點。 它將以列表形式返回它,因為表達式可以返回幾個節點或不返回任何節點。 這樣,結果類型始終保持不變。
$xml = new DOMDocument();
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$xml->loadXml(
'<numbers>
<number>1</number>
<number>2</number>
<number>3</number>
<number>4</number>
<number>5</number>
</numbers>'
);
$xpath = new DOMXpath($xml);
foreach ($xpath->evaluate('/numbers/number[3]') as $thirdNumber) {
$subNumber = $thirdNumber->appendChild(
$xml->createElement("subNumber")
);
$subNumber->appendChild($xml->createTextNode("3.3"));
}
echo $xml->saveXml();
輸出:
<?xml version="1.0"?>
<numbers>
<number>1</number>
<number>2</number>
<number>3<subNumber>3.3</subNumber></number>
<number>4</number>
<number>5</number>
</numbers>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.