使用SAX解析器从word文档获取图像

时间:2014-07-07 10:22:22

标签: xml xml-parsing openxml saxparser

我需要获取word文档中出现的第一个图像的rId。我处理的文档不需要完全解析。所以我决定使用SAX解析器。以前我使用的是DOM解析器,而且我是SAX的新手。有人能告诉我如何使用SAX获取图像的rId吗? 这是一个示例xml文件

<pic:pic xmlns:pic="http://schemas.openxmlformats.org/drawingml/2006/picture">
                                <pic:nvPicPr>
                                    <pic:cNvPr id="1" name="Harry-Potter-and-the-Prisoner-of-Azkaban-movie-poster.jpg"/>
                                    <pic:cNvPicPr/>
                                </pic:nvPicPr>
                                <pic:blipFill>
                                    <a:blip r:embed="rId5">
                                        <a:extLst>
                                            <a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
                                                <a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/>
                                            </a:ext>
                                        </a:extLst>
                                    </a:blip>
                                    <a:stretch>
                                        <a:fillRect/>
                                    </a:stretch>
                                </pic:blipFill>
                                <pic:spPr>

我决定试试这个: 我可以有布尔变量,即isPic,isblipFill。 当我遇到一个 <pic:pic>元素我可以设置isPic = true,当我一个接一个地读它的孩子时,当我遇到<pic:blipFill>时,我可以设置isblipFill = true,之后当我读<a:blip>时,我可以阅读它的属性r:embed(具有图像的rId)。 仅当isPic = true时,才会检查元素是否为blipFill 如果blipFill = true

,则检查元素是否为blip

这是我检查xmlParsing的层次结构的方法。我知道使用xPath这个任务很容易,但为了性能,我试图使用SAX 这是正确的做法吗?

0 个答案:

没有答案