使用Microsoft Graph OneNote Content API时<br>被替换为[OBJ]的问题咨询
问题原因与解析
为什么<br>会被替换为[OBJ]
当你通过OneNote API提交带有<br>的HTML内容时,OneNote服务会把这个标准HTML换行转换为OneNote原生的换行元素——这属于OneNote内部格式体系的一部分,和标准HTML的<br>并不是完全等价的对象。
而当调用Graph API的内容端点获取页面内容时,Graph API需要把OneNote的内部格式序列化回标准HTML。对于一些OneNote特有的、没有直接对应标准HTML标签的内部元素,Graph API就会用[OBJ]这个占位符来表示,它本质上是Graph API无法完全映射回标准HTML的内容标记。你看到的[OBJ],其实是OneNote原生换行元素在Graph API序列化时的“替代符号”,并非<br>本身被直接替换。
哪些内容会被替换为该字符
除了上面提到的原生换行元素外,这些OneNote特有的内容类型也会触发这个占位符:
- OneNote原生的段落分隔标记(和HTML的
<p>分段逻辑不同的内部标记) - 某些自定义的富文本格式对象(比如特定的文本高亮、自定义间距的内部实现)
- OneNote特有的分隔线类型(不是标准HTML的
<hr>,而是OneNote自己的分隔元素) - 无法被Graph API正确解析的嵌入式小对象(比如一些OneNote内部的图标、自定义控件)
- 部分手写内容的序列化占位(如果页面包含手写笔记,Graph API可能用
[OBJ]表示无法转换的手写片段)
可能的解决思路
如果想要避免[OBJ]出现,可以尝试这些方式:
- 用
<p>标签实现分段,替代<br>换行——OneNote会将<p>解析为标准段落,Graph API也能正确映射回<p>标签,不会产生占位符 - 用
<div>包裹不同的文本块来实现换行效果,替换<br>的使用 - 如果必须使用换行,尝试贴合OneNote内部格式的提交方式(不过这不如标准HTML标签直观)
内容的提问来源于stack exchange,提问作者Deepak Sharma
相关产品推荐
相关产品推荐

