Power Automate读取HTML表格报错:未声明实体'nbsp'解决方法求助
解决邮件HTML转XML时的
nbsp实体错误问题 核心原因
XML只默认支持&、<、>、"、'这几个实体,邮件HTML里的 不在这个范围内,直接传入xml()函数就会触发未声明实体的错误。
具体解决步骤
先替换HTML实体为XML兼容格式
在ComposeHTML动作之前新增一个Compose动作,用replace()函数把 替换成XML可识别的十进制Unicode实体:replace(triggerBody()?['body'],' ',' ')要是邮件里还有其他类似的HTML实体(比如
©、®),可以嵌套多个replace处理:replace(replace(triggerBody()?['body'],' ',' '),'©','©')用处理后的内容调用
xml()函数
将上述Compose动作的输出作为xml()函数的参数,示例:xml(outputs('Compose_Replace_Entities'))复杂场景的快捷处理方案
如果邮件里存在大量未知的HTML实体,直接用编码解码组合来批量转换:xml(decodeUriComponent(encodeUriComponent(triggerBody()?['body'])))原理是先将HTML转成URI编码格式,再解码还原,这样大部分HTML实体都会被转换成Unicode字符,XML就能正常解析。
额外提醒
如果邮件HTML本身格式不规范(比如标签未闭合),就算替换了实体仍可能报错,这时候需要先简单修复HTML结构,比如用字符串函数补全闭合标签。测试时可以先把邮件HTML内容输出到Compose动作中,排查是否还有未处理的特殊实体。
内容的提问来源于stack exchange,提问作者achyuta kaushik
相关产品推荐
相关产品推荐

