net.sf.saxon.event.ReceivingContentHandler.startPrefixMapping(ReceivingContentHandler.java:291)的NullPointerException

问题描述 投票:0回答:1

正在获取错误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>
java apache-camel xslt-2.0 saxon
1个回答
0
投票

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处理程序上设置接收器。

© www.soinside.com 2019 - 2024. All rights reserved.