# `FeedReader.Recovery`

Public facade for streaming XML recovery.

It detects declared encodings and applies prefix, encoding, entity, and
malformed-attribute recovery in that order. Each stage preserves streaming
behavior and carries incomplete markup across chunk boundaries.

# `declared_encoding`

```elixir
@spec declared_encoding(binary()) :: :utf8 | :latin1 | :ascii
```

Returns the encoding declared by an XML prefix, defaulting to UTF-8.

# `normalize`

```elixir
@spec normalize(Enumerable.t(), :utf8 | :latin1 | :ascii) :: Enumerable.t()
```

Normalizes an enumerable of XML chunks without eagerly consuming it.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
