2013-10-19 84 views
4

在鏢,在鏢解析HTML字符串,DOM

我想解析字符串「<!DOCTYPE HTMT><html><head></head><body>....</body></html>」到DOM,這樣我可以操縱產生的DOM元素。我知道在JQuery中,有$ .parseHTML來處理它。但我在鏢裏找不到類似的東西。 謝謝。

(我曾經嘗試html2lib,但輸出文件不能使用query(".classname")選擇。)

+2

我在twitter上詢問了Vyacheslav Egorov,他給出了這個答案:[https://api.dartlang.org/docs/channels/stable/latest/dart_html/DocumentFragment.html#html],DocumentFragment。 – xhg

回答

2

嘗試html5lib。它是100%純粹的飛鏢,所以你應該設置。

根據HTML的性質,您也可以考慮Dart的XML解析器,如dart-xml

+0

謝謝,我試過了,但是我不能使用'query(「。classname」)'來選擇裏面的元素。 – xhg

+0

也許他們從未與dart:html保持兼容性,正如他們承諾的那樣。抱歉。最簡單的做法可能就是使用JQuery來完成您的Dart應用程序中的整個解析/操作過程,方法是使用js-interop。 https://www.dartlang.org/articles/js-dart-interop/ – Vidya

+0

也許是因爲它仍然處於beta版本。謝謝〜 – xhg

3

您可以通過解析HTML文本創建一個元素:

new Element.html("YOUR HTML STRING HERE"); 

看到Dart: Up and Running CH03

編輯
您可能需要通過一個NodeValidator得到渲染等的整個文本:

NodeValidator nodeValidator = new NodeValidatorBuilder() 
    ..allowTextElements(); 
    // ..allowHtml5() 
    // ..allowElement('Button', attributes: ['ng-disabled']); 

new Element.html("YOUR HTML STRING HERE", validator: nodeValidator); 

如果您運行該應用程序,則會收到類似「元素/屬性xxx從...中刪除」的日誌消息,如果某些文本未被NodeValidator接受。

+0

太棒了!你是男人! –

+0

似乎很酷!我會嘗試 – xhg