我想将DOM标签值保存为XML,我找到了replace函数,但是它在js中,我需要在PHP中使用该函数
我尝试了save
和saveXML
函数,但是没有用。我在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;
}
答案 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 & 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 & Universe!</auction_title>
</auctions>
PHP DOMNode::$nodeValue
的实现与W3C API定义不匹配。对于读取,它的行为与DOMNode::$textContent
相同,并且在写入时不会完全转义。