我是PHP库phpQuery内容解析器的忠实粉丝(因为它很像jQuery,同时使用PHP DOMDocument提取标记),但我注意到快速关闭事件中包含特定元素的错误
我注意到这个错误也出现在< code>DOMDocument
和< code>phpQuery中。
我编写了一个简单的类PhpContentDocument来转储一个简单的html文档。
require_once "../phpquery_lib/phpQuery.php";
require_once "PhpContentDocument.class.php";
$sample_document = new PhpContentDocument('Sample Document');
$sample_document->addElement('text element', "<span class='text_element'>This is some Sample Text</span>");
$sample_document->addElement('image element', "<img src='png_file.png' alt='png_file' id='png_file' />");
$sample_document_string = $sample_document->get_string();
结果如你所料...
<!DOCTYPE HTML>
<html>
<head>
<title>Sample Document</title>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<body>
<span class='text_element'>This is some Sample Text</span>
<img src='png_file.png' alt='png_file' id='png_file' />
</body>
</html>
但是当使用saveHTML调用文档时
$php_query_document = new DOMDocument('UTF-8', '1.0');
$php_query_document->formatOutput = true;
$php_query_document->preserveWhiteSpace = true;
$php_query_document->loadHTML($sample_document_string);
$php_query_document_string = $php_query_document->saveHTML();
echo $php_query_document_string;
它返回...
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>Sample Document</title>
</head>
<body>
<span class="text_element">This is some Sample Text</span>
<img src="png_file.png" alt="png_file" id="png_file">
</body>
</html>
我遇到的主要问题是,当我在元素img#png_file
上使用简单XML元素时(例如)
使用内容解析器传递<代码>
$simple_doc = new SimpleXMLElement((string) $php_query_document->find('img#png_file'));
我收到以下警告和异常,即使我的原始标记可以与 SimpleXML 元素一起使用
。
Warning: SimpleXMLElement::__construct(): Entity: line 1: parser error : Premature end of data in tag img line 1 in F:\xampp\htdocs\Test_Code\phpquery_test_items\index.php on line 17
Warning: SimpleXMLElement::__construct(): <img src="png_file.png" alt="png_file" id="png_file"> in F:\xampp\htdocs\Test_Code\phpquery_test_items\index.php on line 17
Warning: SimpleXMLElement::__construct(): ^ in F:\xampp\htdocs\Test_Code\phpquery_test_items\index.php on line 17
Fatal error: Uncaught exception 'Exception' with message 'String could not be parsed as XML' in F:\xampp\htdocs\Test_Code\phpquery_test_items\index.php:17 Stack trace: #0 F:\xampp\htdocs\Test_Code\phpquery_test_items\index.php(17): SimpleXMLElement->__construct('<img src="png_f...') #1 {main} thrown in F:\xampp\htdocs\Test_Code\phpquery_test_items\index.php on line 17
由于元素没有关闭事件
。
TL:DR警告:SimpleXMLElement::__construct():实体:第1行:解析器错误:标记img第1行中的数据过早结束
我怎样才能解决这个问题?我确实有一些想法,但最好是
/
如果您使用DOMDocument::saveXML()
而不是DOMDocument::saveHTML()
,您将获得有效的XML。
如果有必要,您可以剥离xml声明行< code >
我刚刚意识到您希望find()
方法返回正确的XML。因此,如果这意味着您必须更改实现该方法的类,我不确定我的上述建议是否有帮助。
也许你可以做一些有点复杂的事情,比如:
$node = $php_query_document->find('img#png_file');
$simple_doc = new SimpleXMLElement( $node->ownerDocument->saveXML( $node ) );
这预先假设$node
是DOMNode
的一些实现,我怀疑它是。这做的是询问$node-
另一种可能性(我不一定推荐)是在解析时让< code>SimpleXML
宽松一些,将以下libxml选项传递给构造函数:
$simple_doc = new SimpleXMLElement(
(string) $php_query_document->find('img#png_file'),
LIBXML_NOERROR | LIBXML_ERR_NONE | LIBXML_ERR_FATAL
);
这抑制了解析内容时的libxml错误。libxml是底层的XML解析器,由SimpleXML和DOMDocument(以及其他)使用。
我目前正在为一个即将开始的项目制作自己的关卡创建器(地图)。一切都很好,除了我在添加放大和缩小选项时遇到了一个问题。我有一个处理所有输入和渲染的类,因为我才刚刚开始。 如您所见,此类扩展了InputAdapter并实现了Application ationListener。 照相机是正字法照相机。cameraHelper是我做的一个助手类。我把摄像机的位置设在这里。cameraHelper.setP
我很清楚关于这个话题有多个问题,但我就是弄不懂它的意思。问题似乎是没有将新值添加到@cacheable列表中。 调试完问题后,我发现问题似乎出在钥匙上。 下面是代码片段 所以当我调用save方法时,用于缓存的关键字是incrementing integer,或者1,2,3...但是当我尝试获取所有文档时,缓存使用SimpleKey[]作为键。如果我尝试为@Cacheable使用相同的键,我会得到S
我正在尝试使用Spring Security性和AngularJS设置默认SuccessUrl,但是成功登录后,html页面将加载到网络中,但没有显示。这是我的安全配置 但是,我仍然显示登录页面,而不是hello.jsp页面。登录的Angular服务: 有人知道为什么吗?
我正在做一个采矿游戏,如果你点击某个地方,你会删除那里的方块。现在所有的块都是正方形,只有当我的2d布尔数组中的点为真时才绘制。所以我试着把这个位置设置为false,只要你点击这里,就是我的输入处理器的触地方法 我也在将相机转换为我的玩家位置。grid.manipulate网格接受一个x和一个y并将其设置为false。我的玩家位于网格坐标中的(10,126),当我点击他旁边时,它显示我正在点击(3
问题内容: 有这个: 并运行: 我得到: 这是不正确的。句子中的标签应为: 通过他们的在线工具测试得出相同的结果。,并且应该是形容词而不是名词。 问题答案: 简而言之 : NLTK并不完美。实际上,没有任何模型是完美的。 注意: 从NLTK版本3.1开始,默认功能不再是旧的MaxEnt English pickle。 现在它是 感知恶搞 从@ Honnibal的实现 ,见 还是更好,但并不完美:
我是JS的新手,不明白为什么我的程序中的图像没有改变。所有的变量都运行良好。下面是片段 所有的图像都被命名为1.jpg,2.jpg,3.jpg,4.jpg,直到24。这是一种很奇怪的方式,我也知道,如果有人知道更好的方式,那会更好。