XML/Input: Difference between revisions

Content added Content deleted
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
(Added Wren)
Line 3,428: Line 3,428:
Console.WriteLine(name)
Console.WriteLine(name)
Next</lang>
Next</lang>

=={{header|Wren}}==
{{libheader|Wren-pattern}}
{{libheader|Wren-fmt}}
Wren doesn't currently have an XML parser though we don't really need one for this task as string pattern matching is sufficient to extract the student names.
<lang ecmascript>import "/pattern" for Pattern
import "/fmt" for Conv

var xml =
"<Students>
<Student Name=\"April\" Gender=\"F\" DateOfBirth=\"1989-01-02\" />
<Student Name=\"Bob\" Gender=\"M\" DateOfBirth=\"1990-03-04\" />
<Student Name=\"Chad\" Gender=\"M\" DateOfBirth=\"1991-05-06\" />
<Student Name=\"Dave\" Gender=\"M\" DateOfBirth=\"1992-07-08\">
<Pet Type=\"dog\" Name=\"Rover\" />
</Student>
<Student DateOfBirth=\"1993-09-10\" Gender=\"F\" Name=\"&#x00C9;mily\" />
</Students>"

var p = Pattern.new("<+1^>>")
var p2 = Pattern.new(" Name/=\"[+1^\"]\"")
var p3 = Pattern.new("/&/#x[+1/h];")
var matches = p.findAll(xml)
for (m in matches) {
var text = m.text
if (text.startsWith("<Student ")) {
var match = p2.find(m.text)
if (match) {
var name = match.captures[0].text
var escapes = p3.findAll(name)
for (esc in escapes) {
var hd = esc.captures[0].text
var char = String.fromCodePoint(Conv.atoi(hd, 16))
name = name.replace(esc.text, char)
}
System.print(name)
}
}
}</lang>

{{out}}
<pre>
April
Bob
Chad
Dave
Émily
</pre>


=={{header|XPL0}}==
=={{header|XPL0}}==