【问题标题】:Saxon c# XSLT XDM node not buildSaxon c# XSLT XDM 节点未构建
【发布时间】:2014-06-18 12:13:12
【问题描述】:

这里我需要将 xml 作为参数传递给 XSLT。所以我尝试将 stringXML toXDM 节点设置为我得到 nullprointerexception。下面是我的代码和输入 stringxml。

谁能帮我解决这个问题。

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        JobDTO jobDTO = null; //DB bean class

       Processor m_saxon = null;
       XdmNode d = null;
       using (DBManager db = new DBManager())// connecting to DB
       {
           string m_jobId ="59d0ae8e-b03a-4d0e-a2c2-3f048375f759"; //DB primary key cloumn value
           jobDTO = db.GetJob(m_jobId); //getting row from DB
           using (XmlReader xr = XmlReader.Create(new StringReader(jobDTO.JobXml))) //job.JobXml have the stringxml value
           {
            d = m_saxon.NewDocumentBuilder().Build(xr);//here getting null pointer exception.because of xr is None
           }
        }
    }
}   

}

stringXML 如下

<renderItem processItem="true">
  <callerid      xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">0</callerid>
  <coredataitem xmlns="http://services.lexisnexis.com/shared/xmlschema/coredataitem/2">
    <status>
      <statusvalue>Success</statusvalue>
    </status>
    <itemtype>document</itemtype>
    <title>doclist</title>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">pageCount</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">1</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">statusMessage</detailname>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">subItemsShouldMerge</detailname>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">subitemsAreIndependent</detailname>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">rendertype</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">XPP</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">ssafailedstatuscode</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">0</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">ssadownloadtime</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">0</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">ssauploadtime</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">0</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">apollodownloadtime</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">0</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">apolloitemcount</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">0</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">preprocessingtime</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">1</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">renderingtime</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">2823</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">totalprocessingtime</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">2824</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">processed</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">yes</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">xhtmlCreationTime</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">99</detailvalue>
    </coredataitemdetail>
    <coredataitemdetail group="Renderer">
      <detailname xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">ssastatuscode</detailname>
      <detailvalue xmlns="http://services.lexisnexis.com/shared/xmlschema/servicescommon/2">0</detailvalue>
    </coredataitemdetail>
  </coredataitem>
</renderItem>

【问题讨论】:

  • 考虑发布您收到的确切错误消息,堆栈跟踪会更好。您是否在任何地方使用XdmNode dm_saxon 在哪里声明和初始化?
  • 错误:在 System.AppDomain._nExecuteAssembly(RuntimeAssembly 程序集,String[] args) 在 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly() 在 System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) 处的回调、对象状态、布尔值 preserveSyncCtx)
  • 我已经声明 m_saxon 是一个实例变量。处理器 m_saxon = null;
  • XmlReader xr = XmlReader.Create(new StringReader(stringXML)),我总是将 xr 值设为无。
  • 我认为分配XmlReader xr = XmlReader.Create(new StringReader(stringXML)) 没有任何问题。考虑发布一个最小但完整的示例,以便我们重现问题。如果该行确实给出了错误,那么它与 Saxon 或 XSLT 2.0 无关,因为该行不使用任何 Saxon 类或 API。

标签: c# xslt-2.0 saxon


【解决方案1】:

为了记录,Martin Honnen 确定了解决方案:保存 Saxon 处理器的变量已单元化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2011-12-10
    • 1970-01-01
    相关资源
    最近更新 更多