Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jorishermans/xmlstream
This library helps in processing an xml file as a stream. You can stop the parsing when it is still parsing the document.
https://github.com/jorishermans/xmlstream
Last synced: 28 days ago
JSON representation
This library helps in processing an xml file as a stream. You can stop the parsing when it is still parsing the document.
- Host: GitHub
- URL: https://github.com/jorishermans/xmlstream
- Owner: jorishermans
- License: other
- Created: 2013-11-23T21:01:00.000Z (about 11 years ago)
- Default Branch: xmlstream
- Last Pushed: 2023-10-09T13:34:48.000Z (over 1 year ago)
- Last Synced: 2024-06-21T00:17:29.863Z (7 months ago)
- Language: Dart
- Homepage:
- Size: 141 KB
- Stars: 14
- Watchers: 3
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
## xmlstream ##
A lightweight api for parsing xml
You can listen to xml encounters and states by parsing the xml char by char.
### Simple usage ###
The xmlStreamer will send an XmlEvent that will contain the state and value of a specific part of the xml.
See here a simple example how to use it in your application.
var xmlStreamer = new XmlStreamer(rawText);
...
These are the xml states:* Top
* Open
* Closed
* Attribute
* CharactersNamespace and cdate are still on the todo list to support!
You can add an option to XmlStream to trim space or not, standard he will do this.
var xmlStreamer = new XmlStreamer(rawText, trimSpaces: false);
xmlStreamer.read().listen((e) => print("listen: $e"));
### Object builder usage ###
In this package we provide also the opportunity to build and stream Objects.
If we have the following xml:
world
say whatYou see an item object in it. So we want to pump the data in the following object.
class Item {
String name;
String value;
String toString() => "$name - $value";
}
You can do that by creating a class that extends from XmlProcessor.class ItemProcessor extends XmlProcessor {
ItemProcessor() {
tagName = "item";
}
void onOpenTag(String tag) {
element = new Item();
}
void onAttribute(String key, String value) {
if (key == "name") {
element.name = value;
}
}
void onCharacters(String text) {
element.value = text;
}
}
Now bootstrap the processing and you are ready to build a list of Items.var xmlStreamer = new XmlStreamer(rawText);
var xmlObjectBuilder = new XmlObjectBuilder(xmlStreamer, new ItemProcessor());
xmlObjectBuilder.onProcess().listen((e) => print("listen: $e"));The listen method will produce Item objects and you can listen to the production of it.
If you want to parse an hierachical object structure then you can take a look at XmlParentProcessor class.In my project on github you will find some examples how to use it. Any suggestions for improvements are welcome.
### Ideas ###
It is based upon the SAX's and StAX's principles from Java.
### Contributing ###
If you found a bug, just create a new issue or even better fork and issue a
pull request with you fix.