最新消息:20210917 已从crifan.com换到crifan.org

【已解决】Python发布带缩进的html到WordPress后html被改变缩进丢失问题

WordPress crifan 434浏览 0评论
折腾:
【已解决】给Python发布印象笔记帖子内容到WordPress文章时加上分类和标签
期间,帖子已经发布到WordPress了。
但是又出现类似之前:
【已解决】Python同步印象笔记帖子到WordPress后丢失缩进
的问题了:
代码缩进看起来,有点问题
有tag标签
但是代码缩进有问题。
预览的效果,和发布后效果类似:
对应html源码是:
<div>其中N:</div>
<ul>
     <li>0 = 集成显卡</li>
</ul>
<ul>
     <li>sudo pmset -a GPUSwitch 0</li>
     <li>1 = 独立显卡</li>
</ul>
<ul>
     <li>sudo pmset -a GPUSwitch 1</li>
     <li>2 = 自动切换</li>
</ul>
<ul>
     <li>sudo pmset -a GPUSwitch 2</li>
</ul>
<div></div>
<div>更高级的用法,也可以根据电源模式设置不同GPU模式,比如:</div>
<ul>
     <li>sudo pmset -b GPUSwitch 0</li>
</ul>
<ul>
     <li>-b = battery =电池模式</li>
</ul>
<ul>
     <li>电池模式 用 0 集成显卡 integrated graphics</li>
     <li>sudo pmset -c GPUSwitch 1</li>
</ul>
<ul>
     <li>-c = charger = 电源模式</li>
</ul>
<ul>
     <li>电源模式 用 1 独立显卡 high performance graphic cards</li>
</ul>
其中很明显,最后一个,3层缩进
原始帖子在印象笔记中的效果
调用接口发布到WordPress时的html
  <div>
    其中N:
  </div>
  <ul>
    <li>
      0 = 集成显卡
    </li>
    <ul>
      <li>
        sudo pmset -a GPUSwitch 0
      </li>
    </ul>
    <li>
      1 = 独立显卡
    </li>
    <ul>
      <li>
        sudo pmset -a GPUSwitch 1
      </li>
    </ul>
    <li>
      2 = 自动切换
    </li>
    <ul>
      <li>
        sudo pmset -a GPUSwitch 2
      </li>
    </ul>
  </ul>
  <div>
    <br />
  </div>
  <div>
    更高级的用法,也可以根据电源模式设置不同GPU模式,比如:
  </div>
  <ul>
    <li>
      sudo pmset -b GPUSwitch 0
    </li>
    <ul>
      <li>
        -b = battery =电池模式
      </li>
      <ul>
        <li>
          电池模式 用 0 集成显卡 integrated graphics
        </li>
      </ul>
    </ul>
    <li>
      sudo pmset -c GPUSwitch 1
    </li>
    <ul>
      <li>
        -c = charger = 电源模式
      </li>
      <ul>
        <li>
          电源模式 用 1 独立显卡 high performance graphic cards
        </li>
      </ul>
    </ul>
  </ul>
是正常的ul内嵌ul的。
但是发布后,却被无故的改变成了,丢失了缩进的html格式。
所以现在问题是:
【已解决】WordPress中的html为何会被改变导致ul+li的缩进丢失
所以现在思路就很清晰了:
删除现在的帖子。
重新发布一次,这次发布之前,去掉:
<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
把最顶层的en-note:
<en-note>
</en-note>
换成:
<html>
</html>
或者去掉en-note,都可以。
为了兼容,还是换成html逻辑上更清晰。
去改代码
    def uploadNoteToWordpress(self, curNote, isNeedGetLatestDetail=True):
...
        # content html
        # contentHtml = curNote.content
        # '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">\n<en-note>\n <div>\n  折腾:\n </div>\n <div>\n  【已解决】Mac Pro 2018款发热量大很烫非常烫\n </div>。。。。。。high performance graphic cards\n    </li>\n   </ul>\n  </ul>\n </ul>\n <div>\n  <br/>\n </div>\n</en-note>'
        contentHtml = crifanEvernote.getNoteContentHtml(curNote)
        logging.debug("contentHtml=%s", contentHtml)
        # '<html>\n <div>\n  折腾:\n </div>\n <div>\n  【已解决】Mac Pro 2018款发热量大很烫非常烫\n </div>\n <div>\n  期间, ... graphic cards\n    </li>\n   </ul>\n  </ul>\n </ul>\n <div>\n  <br/>\n </div>\n</html>'

    @staticmethod
    def getNoteContentHtml(curNote):
        """Get evernote Note content html


        Args:
            curNote (Note): evernote Note
        Returns:
            html (str)
        Raises:
        """
        noteHtml = curNote.content


        # '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">\n
        # remove fisrt line
        # <!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">
        # noteHtml = re.sub('<!DOCTYPE en-note SYSTEM "http://xml\.evernote\.com/pub/enml2\.dtd"\s+>', "", noteHtml)
        noteHtml = re.sub('<!DOCTYPE en-note SYSTEM "http://xml\.evernote\.com/pub/enml2\.dtd">\s+', "", noteHtml)


        # convert <en-note>...</en-note> to <html>...</html>
        noteHtml = re.sub('<en-note>(?P<contentBody>.+)</en-note>', "<html>\g<contentBody></html>", noteHtml, flags=re.S)


        return noteHtml
其中的:
noteHtml = re.sub('<en-note>(?P<contentBody>.+)</en-note>', "<html>\g<contentBody></html>", noteHtml, flags=re.S)
就是把en-note变html
期间顺带去:
【已解决】用Python实现印象笔记Evernote的Note笔记的content和BeautifulSoup的soup的互相转换

然后去看看发布后的效果,结果问题依旧。
那去试试,把选项:
让WordPress自动校正嵌套错误的XHTML代码
去掉
看看效果。
然后发现:当时 文本 切换 可视化 那一刻,html就已经被改变了,且被保存到数据库了。
所以已经是被改变后的了:
无法还原。只能重新删除,重新运行代码发布一次
然后文本的html是正常的
切换到 可视化后( html就没被改变了)也就可以了正常显示缩进了:
且切换回来 文本,ul+li也是对的:
【总结】
至此,终于解决了困扰已久,困扰多次的问题:
把印象笔记中帖子中带缩进的内容
发布到WordPress后,结果WordPress中显示效果有问题:缩进丢失
找到最后原因是:
WordPress内部,开启了:
设置-》撰写-》格式-》默认以开启:让WordPress自动校正嵌套错误的XHTML代码
导致:
WordPress内部会自动处理上传的帖子的html
导致把
正常带缩进的html,即带嵌套的ul+li的html:
<ul>
    <li>
      sudo pmset -b GPUSwitch 0
    </li>
    <ul>
      <li>
        -b = battery =电池模式
      </li>
      <ul>
        <li>
          电池模式 用 0 集成显卡 integrated graphics
        </li>
      </ul>
    </ul>
    <li>
      sudo pmset -c GPUSwitch 1
    </li>
    <ul>
      <li>
        -c = charger = 电源模式
      </li>
      <ul>
        <li>
          电源模式 用 1 独立显卡 high performance graphic cards
        </li>
      </ul>
    </ul>
  </ul>
正常html显示效果:
擅自改变为了,错误的,丢失了嵌套的ul+li的缩进的html
<ul>
     <li>sudo pmset -b GPUSwitch 0</li>
</ul>
<ul>
     <li>-b = battery =电池模式</li>
</ul>
<ul>
     <li>电池模式 用 0 集成显卡 integrated graphics</li>
     <li>sudo pmset -c GPUSwitch 1</li>
</ul>
<ul>
     <li>-c = charger = 电源模式</li>
</ul>
<ul>
     <li>电源模式 用 1 独立显卡 high performance graphic cards</li>
</ul>
导致显示效果异常,缩进丢失:
解决办法:
设置-》撰写-》格式-》取消勾选:让WordPress自动校正嵌套错误的XHTML代码
这样之后发布的html,且内部就不会(擅自,乱) 自动校正,出现缩进丢失的问题了。

转载请注明:在路上 » 【已解决】Python发布带缩进的html到WordPress后html被改变缩进丢失问题

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
93 queries in 0.214 seconds, using 23.38MB memory