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
相关推荐
救救孩子把1 分钟前
Java基础之IO流
java·开发语言
小菜yh2 分钟前
关于Redis
java·数据库·spring boot·redis·spring·缓存
宇卿.9 分钟前
Java键盘输入语句
java·开发语言
浅念同学9 分钟前
算法.图论-并查集上
java·算法·图论
立志成为coding大牛的菜鸟.22 分钟前
力扣1143-最长公共子序列(Java详细题解)
java·算法·leetcode
鱼跃鹰飞22 分钟前
Leetcode面试经典150题-130.被围绕的区域
java·算法·leetcode·面试·职场和发展·深度优先
爱上语文2 小时前
Springboot的三层架构
java·开发语言·spring boot·后端·spring
serve the people2 小时前
springboot 单独新建一个文件实时写数据,当文件大于100M时按照日期时间做文件名进行归档
java·spring boot·后端
qmx_073 小时前
HTB-Jerry(tomcat war文件、msfvenom)
java·web安全·网络安全·tomcat
为风而战3 小时前
IIS+Ngnix+Tomcat 部署网站 用IIS实现反向代理
java·tomcat