如何阻止 MS Graph 将 <br /> 标签包装在 <p>?



我正在尝试创建一个简单的OneNote页面,在段落之间使用换行符。当我读到ON Graph API时,结构如下:

<p style="margin-top:0pt;margin-bottom:0pt">
First para
</p>
<br />
<p style="margin-top:0pt;margin-bottom:0pt">
Second para
</p>

但是,当我将这个确切的结构写回Graph时,它会包装<br />标记,导致出现两个换行符而不是一个。

<p><br /></p>

如何让MS Graph相信我只想要一个独立的、非包装的<br />标记,就像我在应用程序中打字时OneNote添加它一样?

我已经尝试了尽可能多的方法来做到这一点(添加多个<br />标记;设置<br />标记的样式;更改内容类型(,但没有成功。

我目前的方法是在前一段中添加<br />标记,这是一个不错的方法——缺点是,当我稍后在OneNote中处理文本时,结果可能是不可预测的。例如,在空行上键入然后添加复选框会将其添加到前一段,因为换行符被视为最后一段的一部分:

<p>
First para
<br />
</p>
<p>
Second para
</p>

我认为这必须作为HTML提交,因为Graph默认是添加行距,原因很奇怪,因为这与在应用程序中添加页面时的ON默认行为不匹配。因此,所有

标签都需要指定边距,以便格式化与应用内编辑一致。

如果我理解这个问题,那就是如何使用post或patch命令复制页面。我使用的解决方案是创建一个模板页面,然后使用
GET https://graph.microsoft.com/v1.0/me/onenote/pages/{id}/content?includeIDs=true[&includeInkML=true]
获取其结构。这将检索具有唯一段落ID的页面结构,然后可以使用创建或更新API来复制正确的页面结构
PATCH https://graph.microsoft.com/v1.0/me/onenote/pages/{id}/content

[
{
"target": "p:{15cc58cb-da48-430d-0fa8-e30f08437d2a}{28}",
"action": "replace",
"content": "<p style="margin-top:0pt;margin-bottom:0pt"><span style="">First para 
</span></p>"
}
]

最新更新