为什么xmldocument.getElementById总是返回null?
-
04-10-2019 - |
题
我有一些看起来像这样的XML(有效XHTML):
<html>
<head>
<script type="text/javascript">
<![CDATA[
function change_header(){
document.getElementById("myHeader").innerHTML="Nice day!";
}]]>
</script>
</head>
<body>
<h1 id="myHeader">Hello World!</h1>
<button onclick="change_header()">Change text</button>
</body>
</html>
我正在尝试获得 #myHeader
节点使用 docment.GetElementById("myHeader")
但是它总是返回 null
. 。为什么?
我是 猜测 它不认识 id
属性为 这 ID属性没有DTD或其他内容?如果是这样,我该如何使用HTML DTD?
解决方案
这是因为xmldocument对什么一无所知 id
方法。您需要在XHTML文档中包含DTD。只需将以下内容放在HTML文件的开头:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
例子:
string html = @"<!DOCTYPE html PUBLIC ""-//W3C//DTD XHTML 1.0 Transitional//EN"" ""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd""><html><body><div id=""foo"">some content</div></body></html>";
XmlDocument document = new XmlDocument();
document.LoadXml(html);
XmlElement div = document.GetElementById("foo");
请注意,这可能会慢一点,因为需要下载DTD。
不隶属于 StackOverflow