替换DOM中的元素值

时间:2019-05-22 09:06:00

标签: php xml replace

我想将DOM标签值保存为XML,我找到了replace函数,但是它在js中,我需要在PHP中使用该函数

我尝试了savesaveXML函数,但是没有用。我在XML中使用冒号“ iaiext:auction_title”标记。我使用了getElement,它的工作原理很好,接下来我也将标题切成50个字符,也可以工作,但是如果我不使用诸如simple_load_file这样的路径,该如何将旧标题替换为新标题。如何在我的脚本中显示此路径?


$dom = new DOMDocument;
$dom->load('p.xml');
$i = 0;
$tytuly = $dom->getElementsByTagName('auction_title');
foreach ($tytuly as $tytul){

    $title = $tytul->nodeValue;
    $end_title = doTitleCut($title);
    //echo "<pre>";
    //echo($end_title);
    //echo "<pre>";
    $i = $i+1;
}

2 个答案:

答案 0 :(得分:0)

在循环中,可以用获取nodeValue的相同方式更新特定节点的值。因此,在您的循环中,每次都进行更新...

$tytul->nodeValue = doTitleCut($title);

然后在循环之后,您可以使用来回显新的XML

echo $dom->saveXML();

或使用

保存
$dom->save("3.xml");

答案 1 :(得分:0)

它与PHP中的基本API相同。但是,浏览器实现了API的更多或其他部分。这是API的5个修订版(DOM级别1至4和DOM LS)。 DOM 3添加了一个属性来读取/写入节点的文本内容:https://www.w3.org/TR/DOM-Level-3-Core/core.html#Node3-textContent

以下示例为标题加上前缀:

$xml = <<<'XML'
<auctions>
  <auction_title>World!</auction_title>
  <auction_title>World &amp; Universe!</auction_title>
</auctions>
XML;

$document = new DOMDocument();
$document->loadXML($xml);

$titleNodes = $document->getElementsByTagName('auction_title');
foreach ($titleNodes as $titleNode) {
    $title = $titleNode->textContent;
    $titleNode->textContent = 'Hello '.$title;
}

echo $document->saveXML();

输出:

<?xml version="1.0"?> 
<auctions> 
  <auction_title>Hello World!</auction_title> 
  <auction_title>Hello World &amp; Universe!</auction_title> 
</auctions>

PHP DOMNode::$nodeValue的实现与W3C API定义不匹配。对于读取,它的行为与DOMNode::$textContent相同,并且在写入时不会完全转义。