猿问

Maximo 中 Enterprise Service 的用户退出中的无效 XPath

我从我的企业服务出口类收到无效 XPath 错误,即使 XPath 在在线验证器中验证并返回数据。谁能解释是什么导致了错误?


日志中的错误:


[9/10/18 18:50:45:969 EDT] 00000024 SystemOut O 2018 年 9 月 10 日 18:50:45:969 [错误] [MXServer01] [] BMXAA1297E - 集成处理失败,因为消息包含无效的 XPath 表达式,例如属性指示符 [@]。null psdi.util.MXApplicationException:BMXAA1297E - 集成处理失败,因为消息包含无效的 XPath 表达式,例如属性指示符 [@]。null at psdi.iface.mic.StructureData.getStructureObjectList(StructureData.java:1219) at kub.iface.migexits.FwToMaxFollowupWoCreate.setUserValueIn(FwToMaxFollowupWoCreate.java:65) at psdi.iface.migcallexits.UserExit(Exit) 112)


用户出口中的部分 Java 代码(显示的最后一行抛出错误):


public class FwToMaxFollowupWoCreate extends UserExit {

    private static MXLogger myLogger = MXLoggerFactory.getLogger("maximo.abc.custom");

    private static final String STREET_CUTS_XPATH = "//*[name()='streetCuts']";

    @Override

    public StructureData setUserValueIn(StructureData erData) {

            try {

                if (myLogger.isDebugEnabled()) {

                    myLogger.debug(className + ": Checking for street cuts");

                    myLogger.debug(erData.toString());

                    myLogger.debug("xpath = " + STREET_CUTS_XPATH);

                }

                List << ? > streetCuts = erData.getStructureObjectList(STREET_CUTS_XPATH);

erData 的价值:


<?xml version="1.0" encoding="UTF-8"?>

<root>

  <metaId>2248684-A-388417</metaId>

  <WONUM>D18-6286</WONUM>

  <ASSETNUM>385691</ASSETNUM>

  <LOCATION>G-VALVE-CONTROL-10134902</LOCATION>

  <DESCRIPTION_LONGDESCRIPTION>This is a follow up work order created from field work</DESCRIPTION_LONGDESCRIPTION>

  <COMMODITYGROUP>UTILITY</COMMODITYGROUP>

  <COMMODITY>GAS</COMMODITY>

  <REPORTEDBY>THA06318</REPORTEDBY>

  <streetCuts>

    <workDetails>

      <WORKTYPE>PM</WORKTYPE>

      <WOPRIORITY>3</WOPRIORITY>

    </workDetails>



牧羊人nacy
浏览 216回答 2
2回答

Smart猫小萌

是的。入站数据的名称空间必须为http://www.ibm.com/maximo,或者实际上是 mxe.int.xmlnamepace 属性中的任何名称。IBM 说这是:“表示集成 XML 名称空间。”。请注意,更改此设置可能会影响迁移管理器(迁移管理器包的源和目标系统值必须相同)。就我而言,我遇到了同样的错误,但来自外部系统的入站数据的命名空间为“&nbsp;http://schemas.xmlsoap.org/soap/envelope/。似乎调用的第一件事是调用 erData.breakData() 来执行此检查。因此,如果您更改属性以匹配,则其他内容可能会中断。如果您可以将名称空间“&nbsp;http://www.ibm.com/maximo&nbsp;”正确插入到您的数据中,那么您或许能够处理它。有道理?这显然是导致错误的原因。
随时随地看视频慕课网APP

相关分类

Java
我要回答