summary refs log tree commit diff stats
path: root/examples/htmltitle.nim
diff options
context:
space:
mode:
Diffstat (limited to 'examples/htmltitle.nim')
-rw-r--r--examples/htmltitle.nim37
1 files changed, 37 insertions, 0 deletions
diff --git a/examples/htmltitle.nim b/examples/htmltitle.nim
new file mode 100644
index 000000000..6cdfd90eb
--- /dev/null
+++ b/examples/htmltitle.nim
@@ -0,0 +1,37 @@
+# Example program to show the new parsexml module
+# This program reads an HTML file and writes its title to stdout.
+# Errors and whitespace are ignored.
+# (c) 2009 Andreas Rumpf
+
+import os, streams, parsexml, strutils
+
+if paramCount() < 1: 
+  quit("Usage: htmltitle filename[.html]")
+
+var filename = appendFileExt(ParamStr(1), "html")
+var s = newFileStream(filename, fmRead)
+if s == nil: quit("cannot open the file" & filename)
+var x: TXmlParser
+open(x, s, filename)
+while true:
+  x.next()
+  case x.kind
+  of xmlElementStart: 
+    if cmpIgnoreCase(x.elementName, "title") == 0: 
+      var title = ""
+      x.next()  # skip "<title>"
+      while x.kind == xmlCharData: 
+        title.add(x.charData)
+        x.next()
+      if x.kind == xmlElementEnd and cmpIgnoreCase(x.elementName, "title") == 0:
+        Echo("Title: " & title)
+        quit(0) # Success!
+      else:
+        echo(x.errorMsgExpected("/title"))
+  
+  of xmlEof: break # end of file reached
+  else: nil # ignore other events
+
+quit("Could not determine title!")
+x.close()
+