hon这样的动态语言也更强大和更方便,这是因为正则表达式是Perl语言的“一等公民”,这就使得Perl比其他以库的方式支持正则表达式功能的语言具有更好的文本数据亲和力。后来的Ruby也学习Perl把直接在语言上支持正则表达式。
结构化文本格式
XML是最近十几年来流行起来的一种通用(半)结构化的文本数据交换格式。XML除具有一般文本格式的优点外,还具有表达复杂的层次信息的优势,所以它至诞生以来就被大量用于配置文件和各种Web Service中。现代程序设计基本都少不了了XML打交道,不过在C++、Java和C#集中静态类型语言中处理XML却并不是一件十分轻松的事情。我们先来看一个Java解析和构建下面这个XML的例子:
12345 Java Groovy java script
1234567891011121314151617181920212223242526272829303132333435363738394041 //Java解析XML DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse("src/languages.xml"); Element langs = doc.getDocumentElement(); System.out.println("type = " + langs.getAttribute("type")); NodeList list = langs.getElementsByTagName("language"); for(int i = 0 ; i < list.getLength();i++) { Element language = (Element) list.item(i); System.out.println(language.getTextContent()); } }catch(Exception e) { e.printStackTrace(); } //Java创建XML DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.newDocument(); Element langs = doc.createElement("langs"); langs.setAttribute("type", "current"); doc.appendChild(langs); Element language1 = doc.createElement("language"); Text text1 = doc.createTextNode("Java"); language1.appendChild(text1); langs.appendChild(language1); Element language2 = doc.createElement("language"); Text text2 = doc.createTex