XML/Input: Difference between revisions
Content added Content deleted
Thundergnat (talk | contribs) (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=\"É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}}== |