4

次のような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。なんで?

DTDなどidないid属性として属性を認識しないと思いますか?その場合、HTML DTDを使用するにはどうすればよいですか?

4

1 に答える 1

7

idこれは、XmlDocument が an の意味について何も知らないためです。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 をダウンロードする必要があるため、これは少し遅くなる可能性があることに注意してください。

于 2010-09-23T06:10:23.597 に答える