使用java库解析VML路径属性值
docx文件使用docx4j,我能够解析来自docx4j的CTRect和CTOval对象的椭圆和矩形。但是当我到达自定义形状docx4j时,给我CTShape或CTShapetype中的对象。我已经阅读了链接 路径值有时具有以下值使用java库解析VML路径属性值,java,ms-word,docx4j,vml,Java,Ms Word,Docx4j,Vml,docx文件使用docx4j,我能够解析来自docx4j的CTRect和CTOval对象的椭圆和矩形。但是当我到达自定义形状docx4j时,给我CTShape或CTShapetype中的对象。我已经阅读了链接 路径值有时具有以下值 m1,1 L1200200,1 xe m100,1 L1100200100 xe m、 l,21600r21600,xe 更多组合…,一些使用调整值,一些使用公式类似路径=”wr@22,0@21@3,,0@21@4@.." 我想解析这些值以获得路径中的点或坐标。我
- m1,1 L1200200,1 xe
- m100,1 L1100200100 xe
- m、 l,21600r21600,xe
- 更多组合…,一些使用调整值,一些使用公式类似路径=”wr@22,0@21@3,,0@21@4@.."
m1,1
:移动到(1,1)
l12002,1
:带点的多段线(1200)(200200)(200,1)
xe
:关闭然后结束
下面是公式的解释:
定义路径的命令的文本表示形式。X或y坐标值可以是对格式为“@#”的公式的引用,其中#是公式的序号,例如“@2”。此属性字符串由一组丰富的命令组成,包括以下命令:
路径命令
ae(安格尔埃利普塞托)
阿尔(安格尔普斯)
ar(arc)
at(arcto)
c(曲线图)
戊(完)
l(线路至)
m(移动到)
nf(无填料)
ns(仰泳)
qb(二次贝塞尔)
qx(椭圆象限)
qy(椭圆象限)
r(rlineto)
t(否决权)
v(曲线图)
wa(顺时针方向)
wr(顺时针弧)
x(关闭)
XSLTSL库方法可用于使用XSLT1.0处理器进行解析
<xsl:template name="str:string-match">
<xsl:param name="text"/>
<xsl:param name="pattern"/>
</xsl:template>
<xsl:call-template name="str:string-match">
<xsl:with-param name="text" select="$mytext"/>
<xsl:with-param name="pattern" select="'m?,?'"/>
</xsl:call-template>
<xsl:if test="fn:matches($mytext, 'm.,.')"></xsl:if>
XPath2.0方法可用于使用XSLT2.0处理器进行解析
<xsl:template name="str:string-match">
<xsl:param name="text"/>
<xsl:param name="pattern"/>
</xsl:template>
<xsl:call-template name="str:string-match">
<xsl:with-param name="text" select="$mytext"/>
<xsl:with-param name="pattern" select="'m?,?'"/>
</xsl:call-template>
<xsl:if test="fn:matches($mytext, 'm.,.')"></xsl:if>
VML是一种XML方言,因此请使用任何Java XSLT处理器:
可以使用VML样式表,例如: