如何在CPI中使用带有默认命名空间的XPath

2020-08-13 14:30发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我正在尝试使用Content Modifier从SuccessFactors oData标准XML有效负载中检索某些字段。 Atom XML具有以下已定义名称空间的根节点:

http://www.w3.org/2005/Atom" xmlns:m =" http://schemas.microsoft.com/ado/2007/ 08/dataservices/metadata " xmlns:d =" http://schemas.microsoft.com/ado/2007/08/ dataservices " xml:base =" https://api10preview.sapsf.com :443/odata/v2/">

我已将命名空间添加到CPI iFlow>运行时配置>命名空间映射为:

xmlns = http://www.w3.org/2005/Atom;xmlns:d=http ://schemas.microsoft.com/ado/2007/08/dataservices; xmlns:m = http://schemas.microsoft.com/ado/2007/08/dataservices/metadata

但是CPI抱怨我没有默认名称空间的前缀,并带有"输入有效的协作名称空间,例如xmlns:test = http://test.com/test "。 当我删除默认的名称空间或向默认的CPI添加别名/前缀时,它很高兴,但是在运行时XPath的评估未成功,并且没有返回任何数据。

有很多方法可以解决此问题(例如,从XML中删除名称空间,从XML中仅删除默认名称空间,尝试通配XPath中的默认名称空间元素,但未通过验证),但是我没有 相信我应该并且假设我只需要知道一个"默认"名称空间前缀别名(或一些类似的小调整)。

如何指定默认名称空间以及显式别名名称空间?

谢谢

Jason

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我正在尝试使用Content Modifier从SuccessFactors oData标准XML有效负载中检索某些字段。 Atom XML具有以下已定义名称空间的根节点:

http://www.w3.org/2005/Atom" xmlns:m =" http://schemas.microsoft.com/ado/2007/ 08/dataservices/metadata " xmlns:d =" http://schemas.microsoft.com/ado/2007/08/ dataservices " xml:base =" https://api10preview.sapsf.com :443/odata/v2/">

我已将命名空间添加到CPI iFlow>运行时配置>命名空间映射为:

xmlns = http://www.w3.org/2005/Atom;xmlns:d=http ://schemas.microsoft.com/ado/2007/08/dataservices; xmlns:m = http://schemas.microsoft.com/ado/2007/08/dataservices/metadata

但是CPI抱怨我没有默认名称空间的前缀,并带有"输入有效的协作名称空间,例如xmlns:test = http://test.com/test "。 当我删除默认的名称空间或向默认的CPI添加别名/前缀时,它很高兴,但是在运行时XPath的评估未成功,并且没有返回任何数据。

有很多方法可以解决此问题(例如,从XML中删除名称空间,从XML中仅删除默认名称空间,尝试通配XPath中的默认名称空间元素,但未通过验证),但是我没有 相信我应该并且假设我只需要知道一个"默认"名称空间前缀别名(或一些类似的小调整)。

如何指定默认名称空间以及显式别名名称空间?

谢谢

Jason

付费偷看设置
发送
4条回答
哎,真难
1楼-- · 2020-08-13 14:49

我找到了可以接受的解决方法:

基本上为默认命名空间创建一个别名,并在您的XPath中引用它:

例如 xmlns:a = http://www.w3.org/2005/Atom

然后在XPath中使用别名前缀作为默认名称空间,例如。/a:entry/a:content/m:properties/d:firstName

这不是理想的方法,而是一种简单的解决方法。 仍然很想知道是否有办法使用默认名称空间。

Aaron 3364
2楼-- · 2020-08-13 15:11

嗨,Vijay,

感谢您的回复。 正如我在问题中提到的那样,我意识到有几种可能的解决方法,涉及转换传入的有效负载。 但是,我认为您不需要执行此操作即可访问由标准SAP系统(或与此相关的任何其他互联网标准系统)生成的XML上的基本Xpath功能。

我应该能够基于SuccessFactors oData有效负载在Oxygen中创建我的Xpath,并使用生成的XPath,而不必转换有效负载或引入人为的命名空间别名/前缀。

再次感谢您的答复。

野沐沐
3楼-- · 2020-08-13 15:14

嗨,

我认为的一种方法是,如果您具有标准结构,则使用期望的XSD将源作为EDMX和Receiver进行映射。 然后它将从atom-xml生成简单的xml。

感谢和问候,

维杰。

Tong__Ming
4楼-- · 2020-08-13 14:59

嗨,

您是对的,如果您有许多字段可以使用xpaths并且存在复杂的名称空间,则可能会有所帮助,否则,我们的方法很好。 例如,我教过它。

谢谢

维杰

一周热门 更多>