XWPFDocument中XmlCursor的使用

类名:

java 复制代码
org.apache.xmlbeans
Interface XmlCursor

版本:

原xml代码:

xml 复制代码
<w:p w14:paraId="143E3662" w14:textId="4167FBA7" w:rsidR="001506F2" w:rsidRPr="003F3D89" w:rsidRDefault="001506F2" w:rsidP="001506F2">
<w:pPr>
<w:pStyle w:val="a1"/>
<w:ind w:firstLine="459"/>
<w:rPr>
<w:rFonts w:ascii="宋体" w:hAnsi="宋体"/>
<w:lang w:eastAsia="zh-CN"/>
</w:rPr>
</w:pPr>
<w:r w:rsidRPr="003F3D89">
<w:rPr>
<w:rFonts w:ascii="宋体" w:hAnsi="宋体" w:hint="eastAsia"/>
<w:lang w:eastAsia="zh-CN"/>
</w:rPr>
<w:t>本文</w:t>
</w:r>
</w:p>

运行代码:遍历xmlObject的每一个元素的每一个属性

java 复制代码
 public ParagraphChildOrderManager(XWPFParagraph paragraph) {
        //using a cursor to go through the paragraph from top to down
        XmlCursor xmlcursor = paragraph.getCTP().newCursor();
        while (xmlcursor.hasNextToken()) {
            XmlCursor.TokenType tokenType = xmlcursor.toNextToken();
            System.out.println("苏菲亚公主~");
        }
    }

进入while之前的xmlcursor,通过xmlcursor.getObject()方法得到:

xml 复制代码
<xml-fragment w14:paraId="143E3662" w14:textId="4167FBA7" w:rsidR="001506F2" w:rsidRPr="003F3D89" w:rsidRDefault="001506F2" w:rsidP="001506F2" xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:cx2="http://schemas.microsoft.com/office/drawing/2015/10/21/chartex" xmlns:cx3="http://schemas.microsoft.com/office/drawing/2016/5/9/chartex" xmlns:cx4="http://schemas.microsoft.com/office/drawing/2016/5/10/chartex" xmlns:cx5="http://schemas.microsoft.com/office/drawing/2016/5/11/chartex" xmlns:cx6="http://schemas.microsoft.com/office/drawing/2016/5/12/chartex" xmlns:cx7="http://schemas.microsoft.com/office/drawing/2016/5/13/chartex" xmlns:cx8="http://schemas.microsoft.com/office/drawing/2016/5/14/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:aink="http://schemas.microsoft.com/office/drawing/2016/ink" xmlns:am3d="http://schemas.microsoft.com/office/drawing/2017/model3d" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:oel="http://schemas.microsoft.com/office/2019/extlst" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16cex="http://schemas.microsoft.com/office/word/2018/wordml/cex" xmlns:w16cid="http://schemas.microsoft.com/office/word/2016/wordml/cid" xmlns:w16="http://schemas.microsoft.com/office/word/2018/wordml" xmlns:w16sdtdh="http://schemas.microsoft.com/office/word/2020/wordml/sdtdatahash" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape">
  <w:pPr>
    <w:pStyle w:val="a1"/>
    <w:ind w:firstLine="459"/>
    <w:rPr>
      <w:rFonts w:ascii="宋体" w:hAnsi="宋体"/>
      <w:lang w:eastAsia="zh-CN"/>
    </w:rPr>
  </w:pPr>
  <w:r w:rsidRPr="003F3D89">
    <w:rPr>
      <w:rFonts w:ascii="宋体" w:hAnsi="宋体" w:hint="eastAsia"/>
      <w:lang w:eastAsia="zh-CN"/>
    </w:rPr>
    <w:t>本文</w:t>
  </w:r>
  </xml-fragment>

在sout这行打上断点,tokenType和xmlcursor.getObject()的内容在遍历中按照顺序依次显示为:

xml 复制代码
tokenType = ATTR <xml-fragment ......>143E3662</xml-fragment>
tokenType = ATTR <xml-fragment ......>4167FBA7</xml-fragment>
tokenType = START
<xml-fragment>
<w:pStyle w:val="a1"/>
  <w:ind w:firstLine="459"/>
  <w:rPr>
    <w:rFonts w:ascii="宋体" w:hAnsi="宋体"/>
    <w:lang w:eastAsia="zh-CN"/>
  </w:rPr>
</xml-fragment>
tokenType = START
<xml-fragment w:val="a1" ....../>
tokenType = ATTR <xml-fragment>a1</xml-fragment>
tokenType = END null
tokenType = START <xml-fragment w:firstLine="459" ....../>
tokenType = ATTR <xml-fragment>459</xml-fragment>
......
<w:rPr>的位置,显示:tokenType = START
</w:rPr>的位置,显示:tokenType = END
相关推荐
南宫生42 分钟前
力扣每日一题【算法学习day.132】
java·学习·算法·leetcode
计算机毕设定制辅导-无忧学长1 小时前
Maven 基础环境搭建与配置(一)
java·maven
风与沙的较量丶2 小时前
Java中的局部变量和成员变量在内存中的位置
java·开发语言
m0_748251722 小时前
SpringBoot3 升级介绍
java
极客先躯3 小时前
说说高级java每日一道面试题-2025年2月13日-数据库篇-请说说 MySQL 数据库的锁 ?
java·数据库·mysql·数据库的锁·模式分·粒度分·属性分
程序员侠客行3 小时前
Spring事务原理 二
java·后端·spring
小猫猫猫◍˃ᵕ˂◍4 小时前
备忘录模式:快速恢复原始数据
android·java·备忘录模式
liuyuzhongcc4 小时前
List 接口中的 sort 和 forEach 方法
java·数据结构·python·list
五月茶4 小时前
Spring MVC
java·spring·mvc
sjsjsbbsbsn4 小时前
Spring Boot定时任务原理
java·spring boot·后端