- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我创建了一个简单的 PHP 脚本,它解析 HTML 文档并使用 getElementByTagName 和 getAttribute 返回元标记。除了一件事,它工作得很好,如果 HTML 标签不是小写的,那么它不会返回标签的内容。例如:
<title>My Title</title>
将返回“我的标题”但是
<Title>My Title</Title>
或
<TITLE>My Title</TITLE>
不会返回任何内容。无论大小写如何,有没有简单的方法让它与标签匹配?我猜它可能涉及正则表达式。
下面的代码示例:
$nodes = $doc->getElementsByTagName('title');
$heading = $doc->getElementsByTagName('h1');
$title = $nodes->item(0)->nodeValue;
$h1 = $heading->item(0)->nodeValue;
$metas = $doc->getElementsByTagName('meta');
for ($i = 0; $i < $metas->length; $i++)
{
$meta = $metas->item($i);
if($meta->getAttribute('name') == 'description')
$description = $meta->getAttribute('content');
if($meta->getAttribute('name') == 'keywords')
$keywords = $meta->getAttribute('content');
if($meta->getAttribute('name') == 'robots')
$robots = $meta->getAttribute('content');
}
最佳答案
DOMDocument::loadHtml() 将所有元素转换为小写(并删除 namespace )。这是一个小演示:
$html = <<<'HTML'
<html><Body><Title>My Title</Title></Body></html>
HTML;
$dom = new DOMDocument();
$dom->loadHtml($html);
echo $dom->saveHtml();
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html><body><title>My Title</title></body></html>
Xml 区分大小写。因此,如果您将某些内容作为 XML 加载,它将保持元素的原样:
$html = <<<'HTML'
<html><Body><Title>My Title</Title></Body></html>
HTML;
$dom = new DOMDocument();
$dom->loadXml($html);
echo $dom->saveXml();
<?xml version="1.0"?>
<html><Body><Title>My Title</Title></Body></html>
这将影响 DOM 方法和 Xpath:
$html = <<<'HTML'
<html><Body><Title>My Title</Title></Body></html>
HTML;
$dom = new DOMDocument();
$dom->loadHtml($html);
var_dump(
// One element "title"
$dom->getElementsByTagName('title')->length
);
$xpath = new DOMXpath($dom);
var_dump(
// "title" as string
$xpath->evaluate('string(//title)')
);
int(1)
string(8) "My Title"
关于php - getElementByTagName 和 getAttribute 区分大小写 - PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23426745/
这个问题已经有答案了: 已关闭10 年前。 Possible Duplicate: ServletContext and Session object 我觉得很奇怪 session.getAttrib
var objects = document.getElementsByTagName('object'); for (var i=0, n=objects.length;i
我正在尝试将给定元素的自定义属性与具有特定类的所有其他元素的自定义属性进行比较...这就是我所拥有的 function choose(el){ var text = $(el).getAttr
如何处理错误无法读取未定义的属性“getAttribute”。我正在使用 DOMParser 来获取 xml 标记的 type 属性。此 xml 标记有时可以是 FirstTag,有时可以是 Seco
我正在做一个任务,要求我们为矩形定义一个类并为其配备各种方法,其中两个是 getHeight()和 getWidth() , 除了 return this.height; 之外不应该做任何事情和 re
我正在使用 jQuery var editor = CodeMirror.fromTextArea($('#upEditor'), { stylesheet:'monokai.css' })
我正在开发一个触摸屏项目,并尝试显示一些图像(将一行分成几个段落,并使用每个段落的背景来显示图像),并为所选图像添加边框(只能是一个)选择),现在我需要通过onclick()显示移动的图像,例如,首先
你好,我是 JS 新手,代码中可能有更多错误。但我不明白为什么 getAttribute 不是一个函数。 测试: test('TESTING', () => { const filterNod
我不确定这里出了什么问题,但是当我尝试运行我的代码时,wishlist.getAttribute 返回 null,但如果我专门调用 getElementById,它将返回我需要的值。虽然我需要 wis
我需要根据第一个框的选择来同步这两个下拉框。 我不能为此使用 “value” 标记,因为代码库从其他地方提取这些值。 以下代码无效: html One Two Three Four
所以我有一个带有动态生成表格的页面,看起来像 行
以下代码片段中的代码演示了在更改 disabled 属性后,我无法检索原始属性值,至少对于 disabled 属性而言是如此。 The jQuery docs暗示 element.getAttribu
如何获取一个元素的所有属性?就像我下面的例子一样,我一次只能得到一个,我想拉出所有 anchor 标签的属性。 $dom = new DOMDocument(); @$dom->loadHTML(ht
我是 Javascript 新手。我想编写一个 javascript 代码,当我单击一个按钮时,会弹出警报窗口并写入数据消息属性。这是我的代码: click function pop() {
我正在尝试使用以下代码获取图像的值: image = doc.querySelector("img.product-pic-image").getAttribute("src"); 我总是得到 nul
我正在尝试获取 angualar.js 中的一些请求属性。我可以使用 request.getAttribute() 在 jsp 方法中获取相同的属性。 我不知道如何获取相同的内部 Angular 。您
我似乎偶然发现了一个看似错误的等价物,使用以下命令生成维基百科主页 (wikipedia.org) 的所有输入的列表: var inputs = Array.prototype.slice.call(
已关闭。这个问题是 not reproducible or was caused by typos 。目前不接受答案。 这个问题是由拼写错误或无法再重现的问题引起的。虽然类似的问题可能在这里 on-t
我正在寻找一种方法来获取存储在变量中的类的值(对于我的示例“AAABC”)。我使用 getAttribute 方法尝试了不同的关键字,但没有成功。关键字“class”显然给了我“gwt-Label”,
我是JAVA编程的新手。 我想使用 android.media.ExifInterface 来保存和恢复一些字节数组作为 exif 信息。 String str = new String(byte
我是一名优秀的程序员,十分优秀!