正在获取错误java.lang.NullPointerException:在骆驼java dsl项目中,net.sf.saxon.event.ReceivingContentHandler.startPrefixMapping(ReceivingContentHandler.java:291)为null,当我尝试使用xslt转换xml时。这个xslt在使用saxon的氧气编辑器中可以完美地工作,但是当我在Apache骆驼中使用与Java项目相同的xslt进行转换时,会遇到异常。有什么办法可以用java和camel项目解决这个问题。我也使用了saxon HE 9作为依赖项。
XML ::::
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Lowdtl xmlns="http://domain/crd/bdr/services/get">
<PreDtl>
<LowestDtl>
<Otpxyz abc="000" xyz="NPS" yahoo="0" temp="" />
<Otpxyz abc="001" xyz="NPS" yahoo="0" temp="" />
</LowestDtl>
<HighDtl>
<linkDtl>
<Otpxyz abc="000" xyz="NPS" yahoo="0" temp="" />
<Otpxyz abc="001" xyz="NPS" yahoo="0" temp="" />
</linkDtl>
<HighDtl>
<BinDtl>
<RestLin abc="003" xyz="NPS" yahoo="0" temp="" />
</BinDtl>
<DatDtl>
<DatCd abc="003" xyz="NPS" yahoo="0" temp="" />
</DatDtl>
</HighDtl>
</HighDtl>
</PreDtl>
<RemoveDtl abc="003" xyz="NPS" yahoo="0" temp="" >
<Ts SysTs="2019-10-29 07:54:43.520" />
<RemoveMsg>
<rmv abc="003" xyz="NPS" yahoo="0" temp="" />
</RemoveMsg>
</RemoveDtl>
</Lowdtl>
XSLT ::
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xpath-default-namespace="http://domain/crd/bdr/services/get">
<xsl:output method="xml" indent="yes" />
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="RemoveDtl" />
</xsl:stylesheet>
NPE表示Java试图取消引用空指针。您应该始终尝试查看异常时提到的源代码行,以查看是否可以解决。
如果this version of the ReceivingContentHandler.java code是正确的,则第291行为:
public void comment (char ch[], int start, int length) throws SAXException {
try {
flush();
if (!inDTD) {
receiver.comment(new CharSlice(ch, start, length), 0, 0);
^^^^^^^^^^^^^^^^^
}
} catch (XPathException err) {
throw new SAXException(err);
}
}
NPE很可能发生,因为未在ReceivingContentHandler
处理程序上设置接收器。