Проблема в том, что в вашем документе отсутствует объявление <!DOCTYPE>
, поэтому tDOM не знает, что элемент id
следует интерпретировать как идентификатор.
Если мы добавим DOCTYPE, все будет работать ...
package require tdom
set html {<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN">
<html>
<head>
</head>
<body>
<div id="m">
</div>
</body>
</html>}
set doc [ dom parse -html $html ]
set node [ $doc getElementById m]
puts [$node asList]
Создает этот вывод для меня:
div {id m} {}
Вы могли бы проверить, что документ был проанализирован вообще, выполнив поиск, чтобы увидеть, можно ли найти элемент с помощью XPath, например:
puts [[$doc selectNodes "//*\[@id\]"] asList]
Так как действительно выдал правильный вывод (как выше), стало ясно, что проблема должна заключаться в интерпретации атрибута, который, в свою очередь, указал прямо на отсутствующий DOCTYPE.
Обновление
На самом деле это ошибка, исправленная в tDOM 0.8.3.