簡體   English   中英

使用importNode而不是root或documentElement

[英]Use importNode other than the root or documentElement

前提:將重新發布該故事,並保留所有當前標記名,並添加任何新標記名,從而創建一個既包含原始標記名又包含新標記名的新故事。

所有這些都有效……我的問題是,如果重新發布的故事根本沒有標簽元素,則需要創建它,然后從原始故事中導入標簽名。

$newXML='<story><metadata></metadata></story>';
$oldXML='<story><metadata><tags><tagname attribute="info"></tagname></tags></metadata></story>';

$newDom = new DomDocument;
$newDom->loadXML($newXML);

$newTagsNode = $newDom->createElement('tags','');

$oTags = $newDom->importNode($newTagsNode, true);
$newDom->documentElement->appendChild($oTags);

問題是我不希望oTag駐留在“ documentElement”或“ root”中,我希望它們駐留在故事/元數據中。

有沒有辦法xpath / query /選擇“元數據”然后追加?

使用DOMXpath通過XPath查找元素列表。 這仍然會返回節點列表,但是您可以在搜索中提供更高的精度。 如果返回至少一個元素,則將其作為附加操作的目標節點。

$xpath = new DOMXpath($newDom);
$elemList = $xpath->query("/story/metadata");

if ($elemList->length > 0) {
    $elemList->item(0)->appendChild($oTags);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM