如何从字符串中创建节点?

时间:2014-12-06 18:08:29

标签: dart

我需要一个问题的帮助。

我有一个叫做的元素,例如myElement。我还有一些字符串和元素(通常是节点),我想添加为myElement的子节点(所有相同级别)。我的想法看起来像这段代码:

DivElement div1=new DivElement();
// ... some parameters of div1
String string1="Hello";
DivElement div2=new DivElement();
// ... some parameters of div2
String string2="World!";

DivElement myElement=new DivElement();
myElement.nodes.addAll([div1,string1,div2,string2]);

但这不起作用,因为字符串不是节点。我如何从字符串中创建节点?

2 个答案:

答案 0 :(得分:3)

另见https://stackoverflow.com/a/22065859/217408

您可以通过解析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);

如果您运行该应用程序,则会从&... 34中删除" element / attribute xxx等日志消息。如果NodeValidator没有接受某些文本。

答案 1 :(得分:1)

您只能将Node添加到元素的节点列表中。但是,您可以从字符串创建Text node

例如:

myElement.nodes.addAll([div1, new Text(string1), div2, new Text(string2)]);