Expand description
Convert XML records to Arrow batches with explicit or inferred schemas.
Use XmlBatchBuilder for record elements and XmlReader for documents.
XmlReader::infer samples a document to infer its schema.
use arrow_schema::DataType;
use xml_arrow::{XmlBatchBuilder, XmlField, XmlSchema};
let schema = XmlSchema::new(vec![
XmlField::new("id", "@id", DataType::Int64, false),
XmlField::new("title", "title", DataType::Utf8, true),
])?;
let mut builder = XmlBatchBuilder::new(schema, 128)?;
builder.append_xml(r#"<book id="7"><title>Rust</title></book>"#)?;
let batch = builder.flush()?.unwrap();
assert_eq!(batch.num_rows(), 1);
assert_eq!(batch.num_columns(), 2);Nested fields:
use arrow_schema::DataType;
use xml_arrow::{XmlBatchBuilder, XmlField, XmlSchema};
let schema = XmlSchema::new(vec![XmlField::list(
"people", "people", false,
XmlField::structure("item", "person", false, vec![
XmlField::new("id", "@id", DataType::Int64, false),
]),
)])?;
let mut builder = XmlBatchBuilder::new(schema, 128)?;
builder.append_xml(r#"<r><people><person id="1"/><person id="2"/></people></r>"#)?;
assert_eq!(builder.flush()?.unwrap().num_rows(), 1);Read a document:
use arrow_schema::DataType;
use futures_util::io::Cursor;
use xml_arrow::{ReaderOptions, XmlField, XmlReader, XmlSchema};
let schema = XmlSchema::new(vec![
XmlField::new("id", "@id", DataType::Int64, false),
])?;
let mut reader = XmlReader::new(
Cursor::new(b"<rows><row id='1'/><row id='2'/></rows>"),
schema, "/rows/row", ReaderOptions::default(),
)?;
futures_executor::block_on(async {
assert_eq!(reader.next_batch().await?.unwrap().num_rows(), 2);
assert!(reader.next_batch().await?.is_none());
xml_arrow::ReaderResult::Ok(())
})?;Structs§
- Inference
Options - Bounds the records retained for schema inference.
- Namespace
Binding - A schema prefix bound to a namespace URI.
- Reader
Options - Batch size, projection, and XML limits.
- XmlBatch
Builder - Builds Arrow batches from complete XML record elements.
- XmlField
- An Arrow field with a relative XML path.
- XmlReader
- Reads XML records selected by an absolute path into Arrow batches.
- XmlRecord
- One selected XML record, ready for independent Arrow conversion.
- XmlSchema
- Validated column mappings and namespace bindings.
Enums§
Functions§
- infer_
records - Infer reusable XML mappings from a bounded sample, then replay every raw record.
- read_
records - Stream complete XML records without converting field values to Arrow.
Type Aliases§
- Reader
Result - Result with
ReadError. - Result
- Result with
Error.