Skip to Content

Odoo 中XML 和 XPath 定位小结

Odoo/OpenERP 中 XML 和 XPath 定位小结

1. XML 简介

XML 文档结构

  • 文档首部:声明包含标签,例如 <?xml version="1.0" encoding="UTF-8"?>
  • 文档主体:数据通过树形结构组织,包含元素节点、属性节点、子元素和文本内容。
  • 根元素:一个格式正确的 XML 文档必须有一个且仅有一个根元素。
  • XML 片段:没有根元素的 XML 文档称为 XML 片段。

特殊字符处理

使用 CDATA 段处理特殊字符:

<![CDATA[
        特殊字符如 <, >, &, ', " 等
    ]]>

2. XPath 语言

树形结构

  • XPath 将 XML 文档视为一个树形结构,节点包括元素、属性、文本、注释和处理指令。
  • 使用路径表示法定位节点或节点集合。

节点类型

  • 元素节点:如 <Config>、<Department>。
  • 属性节点:如 id="1001"。
  • 文本节点:元素中的文本内容。

路径表达式

  • 绝对路径:从根节点开始,如 /Config/Department。
  • 相对路径:从当前节点开始,如 ./Name 或 ../@id。

常用标识符

  • child:默认标识符,表示子节点。
  • self:当前节点。
  • parent:上一级节点。
  • descendant:子孙节点。
  • attribute:属性节点。

路径简化

  • 元素节点访问:/Config/Department
  • 属性节点访问:/Config/Department/@id
  • 子孙节点访问:/class//Name
  • 任意节点访问:/Config/Department/*
  • 相对路径:../@id 或 ./Name

3. XPath 元素定位条件

根据属性值筛选

  • 定位具有属性 id 的 Director 元素:/class/Director[@id]
  • 定位属性值为 1001 的 Director 元素:/class/Director[@id='1001']

或表达式

定位 Director 下的 Name 或 Age:/class/Director/Name|Age

4. 在 Odoo/OpenERP 中的应用

视图定义

使用 XML 定义视图结构。示例:

<record id="view_department_form" model="ir.ui.view">
    <field name="name">department.form</field>
    <field name="model">department</field>
    <field name="arch" type="xml">
        <form string="Department">
            <field name="name"/>
            <field name="manager_id"/>
        </form>
    </field>
</record>

XPath 用于视图继承

使用 xpath 标签定位和修改视图中的节点。示例:

<record id="view_department_form_inherit" model="ir.ui.view">
    <field name="name">department.form.inherit</field>
    <field name="model">department</field>
    <field name="inherit_id" ref="view_department_form"/>
    <field name="arch" type="xml">
        <xpath expr="//field[@name='manager_id']" position="after">
            <field name="employee_ids"/>
        </xpath>
    </field>
</record>

数据导入导出

使用 XPath 定位和操作 XML 数据。

5. 注意事项

  • 在 XML 中正确处理特殊字符,使用 CDATA 段。
  • 确保路径表达式正确,避免语法错误。
  • 避免过于复杂的 XPath 表达式,以提高性能。

通过这些知识,您可以在 Odoo/OpenERP 中有效地使用 XML 和 XPath 进行视图定义、数据操作和模块开发。如果需要更详细的信息,可以参考 Odoo 的官方文档。

Odoo 中XML 和 XPath 定位小结
6776, Administrator December 17, 2024
Tags
Archive