From 12356f3d9d0b4a7ed9b46634401f363079f1b000 Mon Sep 17 00:00:00 2001 From: Maxim Valyanskiy Date: Fri, 1 Jul 2011 12:21:05 +0000 Subject: [PATCH] XSLFCommonSlideData: Workaround for XmlBeans bug#49934 git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1141915 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xslf/usermodel/XSLFCommonSlideData.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java index 3716f7e93..22cde4f9b 100644 --- a/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java +++ b/src/ooxml/java/org/apache/poi/xslf/usermodel/XSLFCommonSlideData.java @@ -17,8 +17,11 @@ package org.apache.poi.xslf.usermodel; +import org.apache.poi.POIXMLException; import org.apache.xmlbeans.XmlCursor; +import org.apache.xmlbeans.XmlException; import org.apache.xmlbeans.XmlObject; +import org.apache.xmlbeans.impl.values.XmlAnyTypeImpl; import org.openxmlformats.schemas.drawingml.x2006.main.CTGraphicalObjectData; import org.openxmlformats.schemas.drawingml.x2006.main.CTTable; import org.openxmlformats.schemas.drawingml.x2006.main.CTTextBody; @@ -52,11 +55,20 @@ public class XSLFCommonSlideData { for (CTGraphicalObjectFrame frame: gs.getGraphicFrameList()) { CTGraphicalObjectData data = frame.getGraphic().getGraphicData(); XmlCursor c = data.newCursor(); - c.selectPath("./*"); + c.selectPath("declare namespace pic='"+CTTable.type.getName().getNamespaceURI()+"' .//pic:tbl"); while (c.toNextSelection()) { XmlObject o = c.getObject(); + if (o instanceof XmlAnyTypeImpl) { + // Pesky XmlBeans bug - see Bugzilla #49934 + try { + o = CTTable.Factory.parse(o.toString()); + } catch (XmlException e) { + throw new POIXMLException(e); + } + } + if (o instanceof CTTable) { DrawingTable table = new DrawingTable((CTTable) o);