标签: domdocument

DOMElement克隆和追加:'错误的文档错误'

有些东西我不完全了解使用PHP的DOM api进行节点克隆.这是一个示例文件,可以快速复制我遇到的问题.

$doc  = new DOMDocument( '1.0', 'UTF-8' );
$root = $doc->createElement( 'root' ); // This doesn't work either $root = new DOMElement( 'root' );
$doc->appendChild( $root );

$doc2  = new DOMDocument( '1.0', 'UTF-8' );
$root2 = $doc2->createElement( 'root2' );
$doc2->appendChild( $root2 );

// Here comes the error
$root2->appendChild( $root->cloneNode() );
Run Code Online (Sandbox Code Playgroud)

当您运行此小片段时,会抛出异常

致命错误:未捕获的异常'DOMException',消息'Wrong Document Error'

我是否可以从文档中获取节点,克隆它,然后将其附加到另一个文档?

php xml dom domdocument

29
推荐指数
1
解决办法
2万
查看次数

如何将HTML插入PHP DOMNode?

有没有什么方法可以在没有内容编码的情况下将HTML模板插入现有DOMNode?

我试过这样做:

$dom->createElement('div', '<h1>Hello world</h1>');
$dom->createTextNode('<h1>Hello world</h1>');
Run Code Online (Sandbox Code Playgroud)

输出几乎相同,唯一的区别是第一个代码将它包装在div中.我试图从字符串加载HTML,但我不知道如何将它的正文内容附加到另一个DOMDocument.

在javascript中,这个过程看起来非常简单明了.

html php dom domdocument

28
推荐指数
3
解决办法
3万
查看次数

如何获取DOMElement节点的HTML代码?

我有这个HTML代码:

<html>
    <head>
    ...
    </head>
<body>
    <div>
    <div class="foo" data-type="bar">
        SOMECONTENTWITHMORETAGS
    </div>
    </div>
</body>
Run Code Online (Sandbox Code Playgroud)

我已经可以使用此函数获取"foo"元素(但仅包含其内容):

private function get_html_from_node($node){
  $html = '';
  $children = $node->childNodes;

  foreach ($children as $child) {
    $tmp_doc = new DOMDocument();
    $tmp_doc->appendChild($tmp_doc->importNode($child,true));
    $html .= $tmp_doc->saveHTML();
  } 
  return $html;
}
Run Code Online (Sandbox Code Playgroud)

但我想返回DOMElement的所有html标签(包括其属性).我怎么能这样做?

php dom domdocument dom-node

28
推荐指数
1
解决办法
3万
查看次数

如果未定义元素,document.getelementbyId将返回null?

在我的代码中,我看到了这个:

if (document.getElementById('xx') !=null) {
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

如果xx未定义元素,这将评估为true还是false?

我应该写:

if (document.getElementById('xx'))
Run Code Online (Sandbox Code Playgroud)

安全吗?

javascript domdocument

28
推荐指数
3
解决办法
10万
查看次数

如何使用DOMDocument替换节点的文本

这是我的代码,它将现有的XML文件或字符串加载到DOMDocument对象中:

$doc = new DOMDocument();
$doc->formatOutput = true;

// the content actually comes from an external file
$doc->loadXML('<rss version="2.0">
<channel>
    <title></title>
    <description></description>
    <link></link>
</channel>
</rss>');

$doc->getElementsByTagName("title")->item(0)->appendChild($doc->createTextNode($titleText));
$doc->getElementsByTagName("description")->item(0)->appendChild($doc->createTextNode($descriptionText));
$doc->getElementsByTagName("link")->item(0)->appendChild($doc->createTextNode($linkText));
Run Code Online (Sandbox Code Playgroud)

我需要覆盖标题,描述和链接标记内的值.上面代码中的最后三行是我尝试这样做的; 但似乎如果节点不为空,则文本将"附加"到现有内容.如何清空节点的文本内容并在一行中添加新文本.

php xml rss domdocument nodes

27
推荐指数
2
解决办法
4万
查看次数

php中的DOMDocument

我刚刚开始阅读有关DOM的文档和示例,以便抓取和解析文档.

例如,我有部分文件如下所示:

    <div id="showContent">
    <table>
    <tr>
        <td>
         Crap
        </td>
    </tr>
<tr>
          <td width="172" valign="top"><a href="link"><img height="91" border="0" width="172" class="" src="img"></a></td>
          <td width="10">&nbsp;</td>
          <td valign="top"><table cellspacing="0" cellpadding="0" border="0">
              <tbody><tr>
                <td height="30"><a class="px11" href="link">title</a><a><br>
                    <span class="px10"></span>
                </a></td>
              </tr>
              <tr>
                <td><img height="1" width="580" src="crap"></td>
              </tr>
              <tr>
                <td align="right">
                    <a href="link"><img height="16" border="0" width="65" src="/buy"></a>
                </td>
              </tr>
              <tr>
                <td valign="top" class="px10">
                    <p style="width: 500px;">description.</p>
                </td>
              </tr>
          </tbody></table></td>
        </tr>
    <tr>
        <td>
Crap
        </td>
    </tr>
    <tr>
        <td>
         Crap
        </td>
    </tr>
    </table>
    </div>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用以下代码来获取所有tr标记并分析其中是否存在垃圾或信息:

$dom …
Run Code Online (Sandbox Code Playgroud)

php html-parsing domdocument xml-parsing

25
推荐指数
1
解决办法
2万
查看次数

用PHP中的DOMDocument缩进

我正在使用DOMDocument生成一个新的XML文件,我希望文件的输出很好地缩进,以便人类读者很容易理解.

例如,DOMDocument输出此数据时:

<?xml version="1.0"?>
<this attr="that"><foo>lkjalksjdlakjdlkasd</foo><foo>lkjlkasjlkajklajslk</foo></this>
Run Code Online (Sandbox Code Playgroud)

我希望XML文件是:

<?xml version="1.0"?>
<this attr="that">
    <foo>lkjalksjdlakjdlkasd</foo>
    <foo>lkjlkasjlkajklajslk</foo>
</this>
Run Code Online (Sandbox Code Playgroud)

我一直在寻找答案,我发现的所有内容似乎都试图以这种方式控制白色空间:

$foo = new DOMDocument();
$foo->preserveWhiteSpace = false;
$foo->formatOutput = true;
Run Code Online (Sandbox Code Playgroud)

但这似乎没有做任何事情.也许这只适用于阅读XML?请记住,我正在尝试编写新文档.

有什么内置的DOMDocument可以做到这一点?或者可以轻松实现这一目标的功能?

php xml whitespace indentation domdocument

23
推荐指数
3
解决办法
2万
查看次数

document.getSelection返回的对象中的anchorNode,baseNode,extentNode和focusNode是什么?

如果我在html页面中做出选择,我会:

var a = document.getSelection()
Run Code Online (Sandbox Code Playgroud)

我得到一个具有四个属性的对象:

  1. anchorNode
  2. baseNode
  3. extentNode
  4. focusNode

前三个的值是相同的,即我选择的文本但它们有何不同以及使用哪个?

javascript html5 google-chrome domdocument

23
推荐指数
3
解决办法
8197
查看次数

使用PHP的HTML DOMDocument解析HTML

我试图用"getElementsByTagName"来做它,但是它不起作用,我是新手使用DOMDocument来解析HTML,因为我曾经使用正则表达式直到昨天在这里有一些类型的fokes告诉我DOMEDocument会更好用于工作,所以我试一试:)

我谷歌周围寻找一些解释,但没有找到任何帮助(不管怎么样)

所以我想捕获"捕获此文本1"和"捕获此文本2"等.

看起来不难,但我想不出来:(

<div class="main">
    <div class="text">
    Capture this text 1
    </div>
</div>

<div class="main">
    <div class="text">
    Capture this text 2
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

html php parsing domdocument

22
推荐指数
1
解决办法
4万
查看次数

PHP DomDocument输出没有<?xml version ="1.0"encoding ="UTF-8"?>

是否有一个选项与DomDocument删除第一行:

<?xml version="1.0" encoding="UTF-8"?>
Run Code Online (Sandbox Code Playgroud)

类实例化自动将它添加到输出中,但是可以摆脱它吗?

php domdocument

22
推荐指数
2
解决办法
2万
查看次数