在这里,我不得不使用xslt解析和转换给定的XML。为此,我需要编写xpath。
下面给出了示例xml。在ServiceProviderGroupPackage和SecondNode中都有不同的名称空间。我需要获得IReference Node的名称空间来获得它的值。
<?xml version="1.0" encoding="utf-8" ?>
<ServiceProviderGroupPackage Version="1.2.0" xmlns="http://webconnectivity.co.uk/ServiceProviderGroupPackage"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:wsa="http://www.w3.org/2005/08/addressing">
<FirstNode Version="1.2.0" xmlns="http://www.MySite.org/Standards/MySiteMsgSvc/1"
xmlns:rlc="http://www.MySite.org/standards/SecondNode/1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</FirstNode>
<SecondNode Version="2010-2" xmlns:ac="http://www.MySite.org/Standards/MySiteMsgSvc/1"
xmlns="http://www.MySite.org/standards/SecondNode/1"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:lloyds="http://www.lloyds.com/The-Market/Operating-at-Lloyds/Resources/Risk_codes">
<Movement Sender="Sender" Receiver="Receiver">
<Contract>
<Type>direct</Type>
<Nature>lm_proportional_or_nonproportional</Nature>
<Reference>B0509311011UMR</Reference>
<IReference>P00000062MM/13A</IReference>
</Contract>
</Movement>
</SecondNode>
</ServiceProviderGroupPackage>发布于 2013-06-02 23:39:58
如果没有覆盖,每个元素都继承父元素的命名空间,因此IReference元素具有与SecondNode元素http://www.MySite.org/standards/SecondNode/1相同的名称空间。
若要检索任意元素的命名空间,请使用namespace-uri(...)函数。
使用XPath 2.0,您可以使用通配符-运算符*而不是名称空间前缀:
namespace-uri(//*:IReference)或者也是
//*:IReference/namespace-uri()使用XPath 1.0时,您必须在谓词中检查名称:
namespace-uri(//*[local-name() = "IReference"])https://stackoverflow.com/questions/16888227
复制相似问题