RosettaCodeData/Task/XML-Input/Zkl/xml-input.zkl

19 lines
537 B
Plaintext

student:=RegExp(0'|.*<Student\s*.+Name\s*=\s*"([^"]+)"|);
unicode:=RegExp(0'|.*(&#x[0-9a-fA-F]+;)|);
xml:=File("foo.xml").read();
students:=xml.pump(List,'wrap(line){
if(student.search(line)){
s:=student.matched[1]; // ( (match start,len),group text )
while(unicode.search(s)){ // convert "&#x00C9;" to 0xc9 to UTF-8
c:=unicode.matched[1];
uc:=c[3,-1].toInt(16).toString(-8);
s=s.replace(c,uc);
}
s
}
else Void.Skip; // line doesn't contain <Student ... Name ...
});
students.println();