KXML
Creator: |
Contents
[hide]Overview
This project tracks the development of the KXML DOM XML parsing library written in D by Opticron. This project was born of the need for an XML parser where none existed that relied on Phobos, supported unparsed cdata nodes, and worked properly with D1.0. The parser operates on strings and attempts to allocate as little memory as possible by using slice references into the original string provided. The parser is loosely based on the Yage XML parser, also written in D. KXML has a completely new parsing engine, but attempts to remain mostly api-compatible with the Yage parser. The parser can currently deal with XML processing instructions, unparsed character data, standard, and self-closing nodes. It will ignore node types it doesn't understand.
Usage Examples
Create an XML element with the name "foo".
XmlNode foo = new XmlNode("foo");
Add an attribute with the name "bar" and value "foobar"
foo.setAttribute("bar","foobar");
Get the first child node of foo
XmlNode firstchild = foo.getChildren()[0];
Get the attribute named bar
char[]barval = foo.getAttribute("bar");
Parse a string for XML
foo = readDocument(xmlstring);
Quirks
- Always outputs XML with double quoted attributes
- The input string may not always be the same as the output string
- Unparsed CData nodes will be escaped and left as regular CData
To Do
- Increase Parsing Speed
- Only iterate through the string once
- Implement some kind of query mechanism that returns an array of nodes.
- Search on node names as well as multiple attributes
- Add an opIndex for child node access (integer)
- Add an opIndex for attribute access (string)