BeanSpitter 1.0.0
.NET Standard 2.0
This package targets .NET Standard 2.0. The package is compatible with this framework or higher.
.NET Framework 4.5
This package targets .NET Framework 4.5. The package is compatible with this framework or higher.
dotnet add package BeanSpitter --version 1.0.0
NuGet\Install-Package BeanSpitter -Version 1.0.0
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="BeanSpitter" Version="1.0.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add BeanSpitter --version 1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: BeanSpitter, 1.0.0"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install BeanSpitter as a Cake Addin #addin nuget:?package=BeanSpitter&version=1.0.0 // Install BeanSpitter as a Cake Tool #tool nuget:?package=BeanSpitter&version=1.0.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
BeanSpitter
A Simple, Stream-Oriented XML Parser for .NET - NuGet: here
This XML Parsing Library aims to simplify parsing operations for files which:
- Have an associated XML Schema Definition (XSD);
- Have classes generated from its XSD file (from
xsd.exe
, for example); - You don't want to create the parsing code by hand, going through
XElement
, dealing with strings and etc., especially for complex XML Schemas.
What does this library offers:
- It is built over regular
XmlReader
andSystem.Xml
infrastructure, so no "out of the world" code. - It is Multi-Platform:
net45
andnetstandard2.0
- Stream-oriented, Memory friendly (around 120 MB of Total Memory Consumption while running tests with over 4GB XML files with Visual Studio), asynchronous XML Validation and Parsing (using
Stream
andTask
); - Schema Loading, XML Validation and Parsing methods with overloads for Byte Arrays, Files and Streams;
- Parsing by type, with header type support (like those XML Files that have Envelope, Header and Payload schemas, e.g. ISO 20022 XML Messages - this library was initially made for these);
- Async Event-raising for nodes read, errors occurred and when it finishes parsing and validating. Kind of SAX inspired, but it raises POCO-like objects;
Usage and Documentation:
- Still a work in progress, but you can find code samples in the SAMPLES folder and a very basic usage example can be found here
Caveats:
- When using .NET Core, you must add a
new XmlUrlResolver()
to yourXmlSchemaSet.XmlResolver
property (reference here) or do this.
Other remarks:
- It has only one dependency, for better testability, which is System.IO.Abstractions;
- The idea is not to "hog" your
ThreadPool
: It will set theTaskScheduler
toEnvironment.ProcessorCount * 2
by default. Reference from here. - It is modular: Even though the defaults work OK, if you fancy something different, the object constructors from the library get Interfaces for almost everything, so you can replace even the
EventRiser
implementation if you would like.
Misc
- It is my first "real" opensource project, so bear with me 😃. Suggestions and contributions are welcome.
- It is not yet a fully tested solution (you can help to improve that), but it is good enough for what I meant and the current tests cover quite complex scenarios out-of-the-box
- To contribute, clone it, create a branch, do your stuff (with tests, please 😃) and submit a pull request.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net45 is compatible. net451 was computed. net452 was computed. net46 was computed. net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETFramework 4.5
- System.IO.Abstractions (>= 4.0.11)
-
.NETStandard 2.0
- System.IO.Abstractions (>= 4.0.11)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.0 | 671 | 9/5/2019 |
1.0.0-beta2 | 404 | 9/5/2019 |
1.0.0-beta1 | 368 | 9/5/2019 |