我目前正在尝试使用java库org.apache.xmlbeans.XmlCursor使用命令XMLCursor.selectPath(“ XPath Call goes here”)引用XML文档中的节点。
我可以使用以下命令获取此命令:
picCur.selectPath("declare namespace p='http://schemas.openxmlformats.org/drawingml/2006/main'; .//p:blip");
但是现在我希望选择具有特定属性的元素。这通常是使用相同的命令使用.//p:blip [@embed="attribute value“完成的,但该属性与元素具有不同的命名空间,我很难找到在执行Xpath之前声明两个命名空间的方法命令。这是我一直试图使用的命令:
picCur.selectPath("declare namespace p='http://schemas.openxmlformats.org/drawingml/2006/main' ” +
"declare namespace r='http://schemas.openxmlformats.org/officeDocument/2006/relationships' " +
".//p:blip[@r:embed=' attribute value ']");
以下是xml代码,非常感谢您的帮助。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
<p:cSld>
<p:spTree>
<p:nvGrpSpPr>
<p:cNvPr id="1" name="" />
<p:cNvGrpSpPr/>
<p:nvPr/></p:nvGrpSpPr>
<p:grpSpPr>
<a:xfrm><a:off x="0" y="0" /><a:ext cx="0" cy="0" /><a:chOff x="0" y="0" /><a:chExt cx="0" cy="0" /></a:xfrm>
</p:grpSpPr>
<p:sp>
<p:nvSpPr>
<p:cNvPr id="2" name="Title 1" />
<p:cNvSpPr><a:spLocks noGrp="1" />
</p:cNvSpPr>
<p:nvPr>
<p:ph type="title" /></p:nvPr>
</p:nvSpPr>
<p:spPr/>
<p:txBody><a:bodyPr/><a:lstStyle/>
<a:p>
<a:r><a:rPr lang="en-GB" dirty="0" smtClean="0" />
<a:t>Worlds Cutest Dragon</a:t>
</a:r><a:endParaRPr lang="en-GB" dirty="0" /></a:p>
</p:txBody>
</p:sp>
<p:pic>
<p:nvPicPr>
<p:cNvPr id="4" name="myDragon" />
<p:cNvPicPr><a:picLocks noGrp="1" noChangeAspect="1" />
</p:cNvPicPr>
<p:nvPr>
<p:ph idx="1" /></p:nvPr>
</p:nvPicPr>
<p:blipFill>
<a:blip r:embed="rId2">
<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>
</p:blipFill>
<p:spPr>
<a:xfrm><a:off x="3643312" y="2634456" /><a:ext cx="1857375" cy="2457450" /></a:xfrm>
</p:spPr>
</p:pic>
</p:spTree>
<p:extLst>
<p:ext uri="{BB962C8B-B14F-4D97-AF65-F5344CB8AC3E}">
<p14:creationId xmlns:p14="http://schemas.microsoft.com/office/powerpoint/2010/main" val="2185825445" />
</p:ext>
</p:extLst>
</p:cSld>
<p:clrMapOvr><a:masterClrMapping/>
</p:clrMapOvr>
</p:sld>
答案 0 :(得分:0)
您是否尝试声明第一个命名空间然后另一个命名空间?
picCur.selectPath("
declare namespace p='http://schemas.openxmlformats.org/drawingml/2006/main';
declare namespace r='http://schemas.openxmlformats.org/officeDocument/2006/relationships';
.//p:blip[@r:embed='value']
");
答案 1 :(得分:0)
请通过将saxonb,saxon-dom,xbean jar添加到服务器来尝试..