Skip to content

codemonstur/simplexml

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Release Maven Central MIT Licence

SimpleXml

After a number of bad experiences with XML parsing in Java I decided to write my own parser.

This project has the following characteristics; correct XML parsing, small, few dependencies, thread-safe, user friendly API, secure.

Version 3.x depends on Java 19. For Java 8 support you have to use 2.x versions.

How to use

The unit tests in src/test/java/unittests can give you a good idea of the capabilities of SimpleXml. There are also a number of small example programs in src/test/java/example that showcase various features.

Examples

Implemented annotations

How to get

It's in maven central.

<dependency>
    <groupId>com.github.codemonstur</groupId>
    <artifactId>simplexml</artifactId>
    <version>3.2.0</version>
</dependency>

Serializing

The simplest case possible:

import xmlparser.XmlParser;

public class MyObject {
    String name;
}

MyObject object = new MyObject();
object.name = "test";

final XmlParser parser = new XmlParser();
System.out.println(parser.toXml(object));

This code will output:

<myobject>
  <name>test</name>
</myobject>

There are more serialization options

  • Renaming fields
  • Fields as attributes
  • Field as text node
  • Skipping fields
  • etc...

For more documentation on serializing look in src/docs/serialize.md.

Deserializing

The simplest case possible:

import xmlparser.XmlParser;

public class MyObject {
    String name;
}

final XmlParser parser = new XmlParser();
final MyObject object = parser.fromXml("<myobject><name>test</name></myobject>", MyObject.class);
System.out.println(object.name);

This code will output:

test

The deserializer will respect the same annotations as the serializer

  • Renamed fields
  • Attributes
  • Text nodes
  • Skipped fields
  • etc...

If there is a feature you would like to have, but doesn't exist, please let me know.

License

The MIT license. And I left out the copyright notice everywhere because I just don't care.