xml2abx 0.1.2

Rust Library To Convert Human Readable XML into Android Binary Xml (ABX)
Documentation
# xml2abx-rs
Rust Library To Convert Human Readable XML into Android Binary Xml (ABX)


## CLI Installation
```bash
cargo install xml2abx
```

## CLI Usage
```bash
Usage: xml2abx [OPTIONS] <input> [output]

Arguments:
  <input>   Input XML file (use '-' for stdin)
  [output]  Output ABX file (use '-' for stdout)

Options:
  -i, --in-place  Overwrite the input file with the output
      --collapse-whitespace  Collapse whitespace
```
- Collapsing whitespaces could significantly decrease binary XML size, but it could also break the XML indentation


## Library Usage
- Basic Usage

```rust
use xml2abx::XmlToAbxConverter;

let xml = r#"<root><element attr="value">text</element></root>"#;
let mut output = Vec::new();
XmlToAbxConverter::convert_from_string(xml, &mut output)?;
```
- Convert from File

```rust
use xml2abx::XmlToAbxConverter;
use std::fs::File;

let mut output = File::create("output.abx")?;
XmlToAbxConverter::convert_from_file("input.xml", &mut output)?;
```

- Convert From Reader
```rust
use xml2abx::XmlToAbxConverter;
use std::io::Cursor;

let xml_data = b"<root><item>value</item></root>";
let reader = Cursor::new(xml_data);
let mut output = Vec::new();
XmlToAbxConverter::convert_from_reader(reader, &mut output)?;
```

```rust
// Use BufWriter for better performance
use std::io::BufWriter;
let writer = BufWriter::new(file);

// Reuse buffers for multiple conversions
let mut buffer = Vec::new();
for xml_doc in docs {
    buffer.clear();
    XmlToAbxConverter::convert_from_string(&xml_doc, &mut buffer)?;
}
```



### Sources
- [BinaryXmlSerializer.java]https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/com/android/internal/util/BinaryXmlSerializer.java;bpv=0

- [abx2xml]https://github.com/rhythmcache/xml2abx-rs/edit/main/README.md


### License
This project is licensed under
- Apache License, Version 2.0