pub struct OoxmlContainer { /* private fields */ }Expand description
OOXML container abstraction over a ZIP archive.
Provides methods to read XML files, binary data, and relationships from an Office Open XML document.
Implementations§
Source§impl OoxmlContainer
impl OoxmlContainer
Sourcepub fn open(path: impl AsRef<Path>) -> Result<Self>
pub fn open(path: impl AsRef<Path>) -> Result<Self>
Open an OOXML container from a file path.
§Example
use undoc::container::OoxmlContainer;
let container = OoxmlContainer::open("document.docx")?;Sourcepub fn from_bytes(data: Vec<u8>) -> Result<Self>
pub fn from_bytes(data: Vec<u8>) -> Result<Self>
Create an OOXML container from a byte vector.
Sourcepub fn from_reader<R: Read + Seek>(reader: R) -> Result<Self>
pub fn from_reader<R: Read + Seek>(reader: R) -> Result<Self>
Create an OOXML container from a reader.
Sourcepub fn read_xml(&self, path: &str) -> Result<String>
pub fn read_xml(&self, path: &str) -> Result<String>
Read an XML file from the archive as a string.
Handles different encodings:
- UTF-8 (with or without BOM)
- UTF-16 LE (with BOM: FF FE)
- UTF-16 BE (with BOM: FE FF)
Sourcepub fn read_xml_optional(&self, path: &str) -> Result<Option<String>>
pub fn read_xml_optional(&self, path: &str) -> Result<Option<String>>
Read an optional XML part.
Returns Ok(None) when the part is absent (Error::MissingComponent),
but surfaces any other error — including Error::Encoding for malformed
byte content — so that corrupted optional parts are never silently
degraded into a valid-empty result.
Sourcepub fn list_files(&self) -> Vec<String>
pub fn list_files(&self) -> Vec<String>
List all files in the archive.
Sourcepub fn list_files_with_prefix(&self, prefix: &str) -> Vec<String>
pub fn list_files_with_prefix(&self, prefix: &str) -> Vec<String>
List files matching a prefix.
Sourcepub fn read_relationships(&self, part_path: &str) -> Result<Relationships>
pub fn read_relationships(&self, part_path: &str) -> Result<Relationships>
Read and parse relationships from a .rels file.
Legacy helper: treats missing relationship parts as optional.
Sourcepub fn read_required_relationships_for_part(
&self,
part_path: &str,
) -> Result<Relationships>
pub fn read_required_relationships_for_part( &self, part_path: &str, ) -> Result<Relationships>
Read relationships for a required OOXML part.
Sourcepub fn read_optional_relationships_for_part(
&self,
part_path: &str,
) -> Result<Relationships>
pub fn read_optional_relationships_for_part( &self, part_path: &str, ) -> Result<Relationships>
Read relationships for an optional OOXML part.
Sourcepub fn read_package_relationships(&self) -> Result<Relationships>
pub fn read_package_relationships(&self) -> Result<Relationships>
Read package-level relationships (_rels/.rels).
Sourcepub fn parse_core_metadata(&self) -> Result<Metadata>
pub fn parse_core_metadata(&self) -> Result<Metadata>
Parse core metadata from docProps/core.xml.
This is common to all OOXML formats (DOCX, XLSX, PPTX).
Sourcepub fn resolve_path(base: &str, relative: &str) -> String
pub fn resolve_path(base: &str, relative: &str) -> String
Resolve a relative path from a base path.