NsXML plug-in (by rsegal)
Author: rsegal (talk, contrib) |
Links
nsxml.zip (52KB)
The plugin is attached for you to try out although quite buggy at this point. I'm getting a crash on shutdown of any installers I make with the plugin. I'm looking into it.
Description
I'm using MSXML and SAX for the writer so this should allow for some pretty strict error checking when required plus it's probably the XML parser I know best. Note that it only does writing right now, I'm playing around with some stuff for how parsing might work. The API is pretty much a wrapper for an MSXML SAX writer instance so if you are familiar with that then you should have no troubles. I am still open for suggestions/request so if you have some please let me know this thing is far from done. You need MSXML 3 so make sure you have that. I'm not sure if you need a specific revision of the MSXML3.dll I'll see if I can find out.
DLL Functions
nsXML::init
Description
Intializes a bunch of MSXML parser instance stuff.
Example
nsXML::init
nsXML::startDocument
Description
Starts a document in memory.
Example
nsXML::startDocument
nsXML::endDocument
Description
Ends a document in memory.
Example
nsXML::endDocument
nsXML::startElem
Description
Start an element in the document, it'll insert something like "<Start>" but not the corresponding "</Start>" which of course is what endElem is for.
Example
None at this moment.
nsXML::endElem
Description
As I mentioned inserts the end element tag "</Start>" for example.
Example
None at this moment.
nsXML::elemVal
Description
Inserts a value for the current element. Should be preceeded by a call to startElem and proceeded by a call to endElem.
Example
None at this moment.
nsXML::insertElemVal
Description
Combines calls to startElement, endElement and characters to write an element into the XML document. In the example above.
Example
nsXML::insertElemVal "Hello" "123"
would insert <Hello>123</Hello> into the XML document
nsXML::write
Description
Writes the constrcuted XML doc out to the file you specify.
Example
nsXML::write "c:\temp.xml"
nsXML::initCOM
Description
Are only necessary if you don't use COM elsewhere in other plugins. Call CoInitialize and CoUninitialize respectively.
Example
nsXML::initCOM
nsXML::uninitCOM
Description
Is only necessary if you don't use COM elsewhere in other plugins. Calls CoUninitialize.
Example
nsXML::uninitCOM
Example Snippet
And here's an example script snippet which you should just be able to try out
nsXML::initCOM nsXML::init nsXML::startDocument nsXML::insertElemVal "Hello" "123" nsXML::insertElemVal "Hel2lo" "1233333" nsXML::endDocument nsXML::write "c:\temp.xml" nsXML::uninitCOM
TODO
Other features I plan to add...
- Search and replace on a specific element or value
- Unicode support (not sure if this is possible with language tables or not but it would be really cool if you could do it)
- support for DOM parser/writer