首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用XPath替换节点,来自2个文件

如何用XPath替换节点,来自2个文件
EN

Stack Overflow用户
提问于 2015-07-01 20:37:37
回答 1查看 70关注 0票数 1

我需要找到(在originalFile.html (//*@id=‘divLinkHeader’/ul)中)并替换为新的(of otherFile.html),因为新文件(originalFile_WithNewUL.html)与新结构一起保存。

代码语言:javascript
复制
<!-- originalFile.html-->
<div class="col-md-4 col-sm-6">
    <div id="headerLog" class="call-5">
        <a href="#">
        <img class="wa333372" src="#">
        </a>
    </div>
    <div id="what5" class="pl-5 subtitle"> 
    </div>
    <div id="divLinkHeader" class="sub">
        <ul class="list-inline list-unstyled"> <!-- <========= DELETE <ul> ?? -->
            <li><a href="#">Line 1</a></li>
            <li><a href="#">Line 2</a></li>
            <li><a href="#">Line 3</a></li>
            <li><a href="#">Line 4</a></li>
        </ul>
    </div>
</div>

这是另一个文件

代码语言:javascript
复制
<!-- otherFile.html-->
<ul class="list-inline list-unstyled">
  <li><a href="#">New Line 1</a></li>
  <li><a href="#">New Line 2</a></li>
  <li><a href="#">New Line 3</a></li>
</ul>

我只想替换另一个节点,以保存一个名为"originalFile_WithNewUL.html“的文件

这是我的代码:

代码语言:javascript
复制
// ---
// Create New originalFile_WithNewUL.html
// ---
$newFile = "originalFile_WithNewUL".".html";
$html = file_get_contents("originalFile".".html");
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);

////
////// create the new node from otherFile.html ???
//// $newNode = $dom->createElement('otherFile.html'); ?????
////
////// fetch and replace the old element ?????
//// $oldNode = $xpath->evaluate("//*[@id='divLinkHeader']/ul");
////
//// $results = $xpath->evaluate("//*");
////


$htmlVar = "<!-- WithNewUL -->\n";
$htmlVar = $htmlVar . $dom->saveHTML($results->item(0)) . "\n";
$htmlVar = $htmlVar . "<!-- END WithNewUL -->";


$fid=fopen($newFile,"w+"); 
fwrite($fid, $htmlVar);  
fclose($fid);

我需要创建这个结构

代码语言:javascript
复制
<div class="col-md-4 col-sm-6">
    <div id="headerLog" class="call-5">
        <a href="#">
        <img class="wa333372" src="#">
        </a>
    </div>
    <div id="what5" class="pl-5 subtitle"> 
    </div>
    <div id="divLinkHeader" class="sub">
        <ul class="list-inline list-unstyled">
            <li><a href="#">New Line 1</a></li>
            <li><a href="#">New Line 2</a></li>
            <li><a href="#">New Line 3</a></li>
        </ul>
    </div>
</div>
EN

回答 1

Stack Overflow用户

发布于 2015-07-01 22:48:02

它不是最优雅的,但它很有效。

代码语言:javascript
复制
$str1 = file_get_contents("originalFile".".html");
$str2 = file_get_contents("otherFile".".html");
$str3 = "abc"; // here Node old

$htmlVar = str_replace($str3, $str2, $str1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31161543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档