なぜ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
属性として DTDなどのないID属性?その場合、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