我正在尝试解析TEXTDATA中包含字符&<和>的XML字符串.通常,这些字符应该是htmlencoded,但在我的情况下,他们不是这样,我得到以下消息:
警告:DOMDocument :: loadXML()[function.loadXML]:在实体中解析属性名称时出错...警告:DOMDocument :: loadXML()[function.loadXML]:找不到开始标记的结尾...
我可以使用str_replace对所有&进行编码,但如果我用<或>进行编码,我也会使用有效的XML标签.
有谁知道这个问题的解决方法?
谢谢!
当我使用php的DomDocument创建XML时,它正确地创建了xml但是所有元素都在一行中,xml文件本身不那么可读.
我在谷歌搜索,发现DomDocument中的属性formatOutput应该解决问题,我使用PHP 5.3,我没有在DomDocument中正确.
有任何想法吗?
我试图使用PHP和XPath从这个XML中获取 ID元素为1364的所有Category节点:http://education.oracle.co.uk/html/oracle/28US/schedule.xml
我的代码目前看起来像这样:
$schedule = new SimpleXMLElement("schedule.xml", null, true);
$nodes = $schedule->xpath("//category[id=1364]");
if(!$nodes) {
echo "No xpath results.";
} else {
echo count($nodes)." results.";
}
Run Code Online (Sandbox Code Playgroud)
XPath不返回任何结果.我已使用其他XPath查询程序检查了查询,并返回了结果.
上面的代码使用SimpleXML,但是在使用DOMDocument时我遇到了完全相同的问题.在SimpleXML和DOMDocument中,运行XPath"//*"都有效,返回文档中的所有节点.
谢谢!
说这是HTML吗?
<html>
<body>
<embed scr="...." attr="..."></embed>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我想匹配整个嵌入标签<embed scr="...." attr="..."></embed>.我怎么能这样做?
我到目前为止
$fragment = new DOMDocument();
$fragment->loadHTML($string);
$xp = new DOMXPath($fragment);
$result = $xp->query("//embed");
print_r($result->item(0));
Run Code Online (Sandbox Code Playgroud) 有什么区别:
Msxml2.DOMDocument
Msxml2.XMLHTTP
Run Code Online (Sandbox Code Playgroud)
?当然,另一个问题是哪一个最符合我的目的,如下所述?
上下文是这样的 - 我有许多代码可以检索网页.我正在为这项任务寻找最有效的对象.例如,像这样:
Dim oXmlHttp : Set oXmlHttp = CreateObject("MSXML2.XMLHTTP")
oXmlHttp.Open "GET", sUri, False
oXmlHttp.Send
If Err Then
getWebPage = "ERROR - could not get the source text of the webpage."
Exit Function
End If
sResponse = oXmlHttp.responseBody
Run Code Online (Sandbox Code Playgroud)
如果我使用以下方法创建对象,这似乎也是一样的
Dim oXmlHttp : Set oXmlHttp = CreateObject("MSXML2.XMLHTTP")
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释或指向一个明确概述每个人的差异(和预期用途)的参考文献吗?
我正在尝试使用该DOMDocument函数getElementsByTagName(),但它不断返回一个空对象.我正在使用以下代码:
// Create some HTML
$output = '
<html>
<body>
<a href="foo">Bar</a>
</body>
</html>';
// Load the HTML
$dom = new DOMDocument;
$dom->loadHTML($output);
// Find all links (a tags)
$links = $dom->getElementsByTagName('a');
var_dump($links); // object(DOMNodeList)#31 (0) { } - empty object
Run Code Online (Sandbox Code Playgroud)
我错过了什么?查看文档,看起来我正在使用该功能.
我正在尝试解析一个充满.htm文件的文件夹.所有这些文件都包含需要删除的1个特定元素.这是一个td元素class="hide".到目前为止,这是我的代码.
$dir. entry是文件的完整路径.
$page = ($dir . $entry);
$this->domDoc->loadHTMLFile($page);
// Use xpath query to find the menu and remove it
$nodeList = $xpath->query('//td[@class="hide"]');
Run Code Online (Sandbox Code Playgroud)
不幸的是,这是事情已经出错的地方.如果我执行var_dump节点列表,我会得到以下内容:
object(DOMNodeList)#5 (0) { }
Run Code Online (Sandbox Code Playgroud)
只是让大家知道我想要选择的内容,这里有一段摘录:
<td width="160" align="left" valign="top" class="hide">
lots of other TD's and content here
</td>
Run Code Online (Sandbox Code Playgroud)
到目前为止,有没有人看到我提出的问题?
我需要获取所有具有样式属性的标签
$html = '<div style="font-style: italic; text-align: center;
background-color: red;">On The Contrary</div><span
style="font-style: italic; background-color: rgb(244, 249, 255);
font-size: 32px;"><b style="text-align: center;
background-color: rgb(255, 255, 255);">This is USA</b></span>';
$dom = new DOMDocument;
$dom->loadHTML($html);
$xp = new DOMXpath($dom);
foreach ($xp->query('/*[@style]') as $node) {
$style = $node->getAttribute('style');
echo $style;
}
Run Code Online (Sandbox Code Playgroud)
但它没有任何要求。我的代码有什么错误?而且,我也只想获取样式中的CSS PRoperty名称,例如font-size,font-weight,font-family,而不是它们的值。
我正在使用domDocument希望解析这个小的HTML代码.我正在寻找具体的特定span标签id.
<span id="CPHCenter_lblOperandName">Hello world</span>
Run Code Online (Sandbox Code Playgroud)
我的代码:
$dom = new domDocument;
@$dom->loadHTML($html); // the @ is to silence errors and misconfigures of HTML
$dom->preserveWhiteSpace = false;
$nodes = $dom->getElementsByTagName('//span[@id="CPHCenter_lblOperandName"');
foreach($nodes as $node){
echo $node->nodeValue;
}
Run Code Online (Sandbox Code Playgroud)
但由于某些原因,我认为代码或html都有问题(我怎么知道?):
echo count($nodes);结果的节点总是1我正在尝试捕获home_impact和away_impact,但是当我提取文本时,它充满了空白行,空白,断行等,如下所示:
David Luiz
35'
36'
De Gea
Run Code Online (Sandbox Code Playgroud)
我也尝试过仅提取div id match_info,但它仅生成一个带有一个元素的数组,并且也有很多换行符。我试过使用preserveWhiteSpace和preg_replace,但是没有用,如何避免这种情况?谢谢。
HTML:
<div id="match_info">
<div class="direct_line">
<div class="home_impact"><div class='player_name'>David Luiz </div></div>
<div class="minute">35'</div>
<div class="away_impact">
</div>
</div>
<div class="direct_line">
<div class="home_impact"></div>
<div class="minute">36'</div>
<div class="away_impact">
<div class='player_name'>De Gea</div>
</div>
</div>
<div class="direct_line">
<div class="home_impact"></div>
<div class="minute">38'</div>
<div class="away_impact">
<div class='player_name'>Ashley Cole</div>
</div>
<div class="home_impact"><div class='player_name'>Juan Mata</div>/div>
<div class="minute">35'</div>
<div class="away_impact">
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
PHP:
$html = file_get_contents($url);
$doc = new DOMDocument();
//$doc->preserveWhiteSpace = FALSE;
@$doc->loadHTML($html);
$xpath = new DOMXpath ($doc);
$expresionHome="//div[@class='home_impact']";
$expresionAway="//div[@class='away_impact']"; …Run Code Online (Sandbox Code Playgroud) domdocument ×10
php ×9
html ×3
xml ×3
xpath ×3
ampersand ×1
parsing ×1
preg-replace ×1
simplexml ×1
xml-parsing ×1