https://github.com/oscarmarcusson/xmltree
A utility for parsing an XML structure without all the hassle
https://github.com/oscarmarcusson/xmltree
csharp dotnet tree-structure utility-library xml xml-parser
Last synced: 2 months ago
JSON representation
A utility for parsing an XML structure without all the hassle
- Host: GitHub
- URL: https://github.com/oscarmarcusson/xmltree
- Owner: OscarMarcusson
- License: mit
- Created: 2023-11-27T14:04:09.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-02T12:19:17.000Z (over 2 years ago)
- Last Synced: 2025-01-30T04:42:57.809Z (over 1 year ago)
- Topics: csharp, dotnet, tree-structure, utility-library, xml, xml-parser
- Language: C#
- Homepage: https://www.nuget.org/packages/XmlTree
- Size: 248 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Xml Tree
A utility for parsing XML structures without all the hassle.
```csharp
// Parse files
var doc = XmlTree.Parse.File("c:/dir/my-file.xml");
foreach(var rootNode in doc.nodes) {
// Do something
}
```
```csharp
// Parse strings
var doc = XmlTree.Parse.String("
Hello World!
");
Console.WriteLine(doc.nodes[0].tag); // > p
Console.WriteLine(doc.nodes[0].value); // > Hello World!
```
```csharp
// Include or ignore comments
var options = new XmlTree.ParserOptions { comments = CommentOptions.Include };
var doc = XmlTree.Parse.String("", options);
Console.WriteLine(doc.nodes[0].tag); // > !--
Console.WriteLine(doc.nodes[0].value); // > Comments work!
```
### What you get
* A full node tree of any given XML structure
* Options for getting / ignoring comments
* Full attribute support
* With quotation marks, both `value="example"` and `value='example'`
* Without quotation marks, like `value=example`
* Full self-closing support
* Any `` style element will be parsed correctly no matter the type of xml
* Any self closing tags in HTML docs, like `
`, will be parsed correctly even if supplied as `
`
* Optional custom closing tags in the parse options
* Simple value & text handling
* Single value nodes, like a `
` element without any spans in HTML, will be parsed as a single node containing the text as its node value
* Multi-value nodes, like a `
` element with one or more `` children, will have all content as child nodes. Any free text outside of spans will be places as children without an element tag
* Automatic encoding from the prolog for `File` and `Byte` parsing
#### Note
This is **not** a deserialization utility, although it could be turned into one should you wish. This is a tool for getting the tree structure of XML data. The tool was for example built for creating an HTML minifier, but it may be used in any XML related workflow.