Confluence REST API如何上传XML并创建页面

冬萱姑娘_6646

冬萱姑娘_6646

2026-02-22

346人浏览

原创

Confluence REST API 不支持直接上传 XML 创建页面,需先解析 XML 提取 title 和 body.storage.value,再以 JSON 格式调用 POST /rest/api/content;宏、附件、子页面需单独处理。

confluence rest api如何上传xml并创建页面

Confluence REST API 不支持直接上传 XML 创建页面

Confluence 的官方 REST API 没有提供「上传任意 XML 文件并自动解析为页面」的端点。所谓“XML 页面导出格式”(如通过 /exportpage.action 生成的 XHTML-like XML)是 Confluence 内部导出/导入机制使用的私有格式,不能直接 POST 给 REST API。试图用 POST /rest/api/content 提交这种 XML 会触发 400 或 500 错误,常见报错如:"Invalid value for body: expected map, got string" 或 "Unrecognized field 'version'"(因 XML 结构与 JSON Schema 完全不匹配)。

正确做法:解析 XML 内容,提取 title + body,再调用标准创建接口

如果你手头有一个 Confluence 导出的 .xml 文件(例如从旧空间导出的单页 XML),需先人工或脚本解析它,从中提取两个关键字段:title 和 body.view.value(即 XHTML 格式的正文内容)。然后按标准 JSON 格式构造请求体。

  • Confluence 导出 XML 中的页面标题通常在 My Page 或 My Page 节点下
  • 正文内容一般包裹在

    ...

    或类似结构中,注意剔除 宏标签(它们在 REST API 中不被识别,需转成等效 HTML 或移除)
  • 必须将提取出的 XHTML 片段包裹进标准的 body.storage.value 字段,并声明 body.storage.representation = "storage"
  • 认证必须使用有效 API Token(Basic Auth 或 Bearer Token),且用户需有目标空间的编辑权限
curl -X POST \
  'https://your-domain.atlassian.net/wiki/rest/api/content' \
  -H 'Authorization: Bearer YOUR_API_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "type": "page",
    "title": "My Imported Page",
    "space": {
      "key": "DEVS"
    },
    "body": {
      "storage": {
        "value": "<p>This is <em>imported</em> content.</p>",
        "representation": "storage"
      }
    },
    "ancestors": [
      {
        "id": 123456789
      }
    ]
  }'

注意宏(macro)、附件、子页面无法通过 XML 解析自动还原

Confluence 导出 XML 中的 、 等节点,在 REST API 创建页面时不会被识别或处理。这些元素必须手动转换:

Wordpress REST API
Wordpress REST API

OpenClaw技能,提供WordPress REST API命令行工具,支持通过原生HTTP处理文章、页面、分类、标签、用户及自定义请求。

下载
  • 需替换为对应 HTML(如 toc 宏 → 本身不可用,只能删掉或改用

    手动目录)
  • 附件需单独调用 POST /rest/api/content/{id}/child/attachment 接口上传,且必须在页面创建成功后获取其 id 才能关联
  • 子页面关系()不会被自动创建;需递归解析 XML 树,按父子顺序依次创建页面,并在每页的 ancestors 中填入上层页面 ID
  • 导出 XML 中的时间戳、作者信息()在 REST API 创建时会被忽略,实际创建人始终是 API 调用者

推荐替代方案:用 Confluence CLI 或 Python + xml.etree.ElementTree 处理

纯手工提取 XML 内容效率低且易错。更可靠的方式是写轻量脚本解析 XML 并生成标准 JSON 请求体。Python 是常用选择,核心逻辑是:

  • 用 xml.etree.ElementTree 加载 XML,定位 title 和 body 节点
  • 对 body 内容做最小清洗:移除所有 ac: 和 ri: 命名空间前缀的标签(保留内部文本或合理 HTML 替换)
  • 确保输出的 XHTML 片段是良构的(闭合标签、无嵌套错误),否则 Confluence 存储解析会失败
  • 用 requests.post() 发送 JSON,检查响应中的 id 和 status 字段确认成功

复杂页面含大量宏或自定义样式时,解析成本高,此时应优先考虑 Confluence 自带的「空间导入」功能(.zip 导出包),而非强行走 REST API。

大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

rest api

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

2023.08.07

2215

5

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.23

3522

1

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

2023.10.13

1176

3

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

2025.09.10

4059

7

string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.08.02

6899

3

pdf怎么转换成xml格式
pdf怎么转换成xml格式

将 pdf 转换为 xml 的方法:1. 使用在线转换器;2. 使用桌面软件(如 adobe acrobat、itext);3. 使用命令行工具(如 pdftoxml)。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.04.01

4824

5

xml怎么变成word
xml怎么变成word

步骤:1. 导入 xml 文件;2. 选择 xml 结构;3. 映射 xml 元素到 word 元素;4. 生成 word 文档。提示:确保 xml 文件结构良好,并预览 word 文档以验证转换是否成功。想了解更多xml的相关内容,可以阅读本专题下面的文章。

2024.08.01

6277

7

xml是什么格式的文件
xml是什么格式的文件

xml是一种纯文本格式的文件。xml指的是可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。想了解更多相关的内容,可阅读本专题下面的相关文章。

2024.11.28

2542

7

登录token无效
登录token无效

登录token无效解决方法:1、检查token的有效期限,如果token已经过期,需要重新获取一个新的token;2、检查token的签名,如果签名不正确,需要重新获取一个新的token;3、检查密钥的正确性,如果密钥不正确,需要重新获取一个新的token;4、使用HTTPS协议传输token,建议使用HTTPS协议进行传输 ;5、使用双因素认证,双因素认证可以提高账户的安全性。

2023.09.14

14546

6

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习