Documentation
¶
Overview ¶
Package ofdxml 提供 OFD XML 顺序写入及读取、修改、写回支持。
Index ¶
- Constants
- func AppendFloat(dst []byte, value float64) []byte
- func Marshal(doc *etree.Document) ([]byte, error)
- func MarshalDocument(doc *etree.Document) ([]byte, error)
- func Parse(data []byte) (*etree.Document, error)
- func Put(w *Writer)
- func WriteElement(w *Writer, element *etree.Element) error
- type Writer
- func (w *Writer) Attr(name, value string)
- func (w *Writer) AttrBox(name string, x, y, width, height float64)
- func (w *Writer) AttrFloat(name string, value float64)
- func (w *Writer) AttrFloatList(name string, values []float64)
- func (w *Writer) AttrInt(name string, value int)
- func (w *Writer) AttrIntList(name string, values []int)
- func (w *Writer) AttrUint(name string, value uint64)
- func (w *Writer) Attribute(name, value string)
- func (w *Writer) Bytes() []byte
- func (w *Writer) Directive(value string)
- func (w *Writer) Done() []byte
- func (w *Writer) Element(name, value string)
- func (w *Writer) ElementBox(name string, x, y, width, height float64)
- func (w *Writer) ElementFloat(name string, value float64)
- func (w *Writer) ElementFloatList(name string, values []float64)
- func (w *Writer) ElementInt(name string, value int)
- func (w *Writer) ElementIntList(name string, values []int)
- func (w *Writer) ElementUint(name string, value uint64)
- func (w *Writer) End()
- func (w *Writer) EndElement()
- func (w *Writer) Err() error
- func (w *Writer) Finish() error
- func (w *Writer) Raw(data []byte)
- func (w *Writer) Reset()
- func (w *Writer) ResetTo(dst io.Writer)
- func (w *Writer) Start(name string)
- func (w *Writer) StartElement(name string)
- func (w *Writer) StartQualified(name string)
- func (w *Writer) Text(value string)
- func (w *Writer) TextBox(x, y, width, height float64)
- func (w *Writer) TextFloat(value float64)
- func (w *Writer) TextFloatList(values []float64)
- func (w *Writer) TextInt(value int)
- func (w *Writer) TextIntList(values []int)
- func (w *Writer) TextUint(value uint64)
- func (w *Writer) WriteTo(dst io.Writer) (int64, error)
Constants ¶
const Namespace = spec.Namespace
Namespace 是 OFD 命名空间 URI。
Variables ¶
This section is empty.
Functions ¶
func AppendFloat ¶
AppendFloat 追加不使用科学计数法的 OFD 数值,四舍五入到四位小数, 去除末尾多余的零并归一化负零。非有限值按 creator 的既有约定写为零。
func Marshal ¶
Marshal 写出修改后的 XML 树,保留原有元素名、命名空间声明和节点顺序。 不缩进、不裁剪文本,不修改输入树;输出字节独立于树与写入器缓冲区。 CDATA 和普通文本统一转义写出。 XML 声明统一为 UTF-8。与 MarshalDocument 不同,此函数不统一 OFD 前缀, 不需要逐节点查找命名空间,适合读取后修改的快速写回。
func MarshalDocument ¶
MarshalDocument 写出已解析的 XML 树,保留扩展命名空间及节点顺序。 OFD 元素按 GB/T 33190—2016 §7.1 使用 ofd 前缀,扩展元素使用原名称。 对 ofd 已绑定外部命名空间的非规范输入,保留该作用域内 OFD 元素的原名称, 避免改变扩展元素、属性或 QName 值的命名空间含义。 此函数不修改输入树;返回的字节独立于写入器缓冲区。
func Parse ¶
Parse 读取 OFD 包中的 UTF-8 XML 1.0 文档,返回可用 etree API 修改的树。 直接通过 lexer 构树,不调用 etree 的解析器。保留文本空白、扩展命名空间、 注释和处理指令;CDATA 作为普通文本读取。按 XML 1.0 归一化字面换行和属性空白, 保留字符引用值。 支持预定义实体和数字引用,不接受 DOCTYPE 或自定义实体。 树不依赖输入切片的生命周期。跨文档移动子树须由调用方补齐命名空间声明。
Types ¶
type Writer ¶
type Writer struct {
// contains filtered or unexported fields
}
Writer 将 OFD XML 顺序写入内存或分块写入目标,自动添加 ofd 前缀和根命名空间声明。 OFD 元素名必须是合法的 XML 本地名,扩展元素可通过 StartQualified 写入。 属性必须在内容之前写入,内容之后的属性调用会被忽略。 一个 Writer 不能被多个 goroutine 同时使用。
func (*Writer) AttrFloatList ¶
AttrFloatList 写入由空格分隔的 OFD 数值列表。
func (*Writer) AttrIntList ¶
AttrIntList 写入由空格分隔的十进制整数列表。
func (*Writer) Bytes ¶
Bytes 关闭剩余元素并直接返回缓冲区,不复制字节。 返回值只在下一次写入或 Reset 前有效;需要长期保留时应自行复制。 仅适用于内存模式,分块模式使用 Finish。
func (*Writer) Directive ¶
Directive 写入已校验的 XML 指令内容,例如 DOCTYPE 定义。 value 不含外围的 <! 和 >;调用方负责保证内容符合 XML 语法。
func (*Writer) Done ¶
Done 关闭剩余元素并把 Writer 归还池中,调用后不得再使用该 Writer。 小缓冲区复制输出后复用,超过池容量上限的缓冲区直接移交给调用方。 返回的切片可安全长期持有;仅需立即写入时,改用 Bytes 避免复制。
func (*Writer) ElementBox ¶
ElementBox 写入只包含矩形数值的元素。
func (*Writer) ElementFloat ¶
ElementFloat 写入只包含 OFD 数值的元素。
func (*Writer) ElementFloatList ¶
ElementFloatList 写入只包含 OFD 数值列表的元素。
func (*Writer) ElementInt ¶
ElementInt 写入只包含有符号整数的 OFD 元素。
func (*Writer) ElementIntList ¶
ElementIntList 写入只包含整数列表的元素。
func (*Writer) ElementUint ¶
ElementUint 写入只包含无符号整数的 OFD 元素。
func (*Writer) ResetTo ¶
ResetTo 开始分块输出文档;写入过程中自动冲刷缓冲区,以 Finish 收尾并获取错误。 dst 为 nil 时等同于 Reset。分块模式不使用 Bytes、Done 或 WriteTo 获取完整文档。
func (*Writer) StartElement ¶
StartElement 开始一个 OFD 元素,根元素自动声明 OFD 命名空间。
func (*Writer) StartQualified ¶
StartQualified 开始一个使用指定 XML 名称的扩展元素,不自动添加前缀。 name 必须是合法的 XML 名称,例如 ext:Value 或 Value;调用方负责用 Attr 声明所需的命名空间。嵌套的 OFD 元素仍可通过 Start 写入。
func (*Writer) TextFloatList ¶
TextFloatList 写入由空格分隔的 OFD 数值列表文本。
func (*Writer) TextIntList ¶
TextIntList 写入由空格分隔的十进制整数列表文本。