第十六章 XML
标签(空格分隔): scala课后习题
1.<fred/>(0)
得到什么?<fred/>(0)(0)
又得到什么?
都将会得到<fred/>
。因为<fred/>
是一个Node,而Node又扩展NodeSeq,表示长度为1的NodeSeq。所以当你调用<fred/>(0)
时相当于调用apply()方法,访问他的第一个元素,返回的类型又是Node,结果就是<fred/>
。所以不管你调用多少次(0)都将会得到<fred/>
2.如下代码的值是什么?你如何修复它?
<ul>
<li>opening bracket:[</li>
<li>Closing bracket:]</li>
<li>opening brace:{</li>
<li>Closing brace:}</li>
</ul>
主要编译会出问题,因为{的原因。修复:
val ul = <ul>
<li>opening bracket:[</li>
<li>Closing bracket:]</li>
<li>{"opening brace:{"}</li>
<li>{"opening brace:}"}</li>
</ul>
println(ul)
3.题目略
行为不同的原因就是: {“Fred”}实际类型是Atom[String]。而前者是Text
4.读取一个XHTML文件,并打印所有不带alt属性的img元素。
读取过程就不说了,写下核心逻辑。
(imgList \\ "img").filter(_.attributes("alt")==null).foreach(println _)