【发布时间】: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 d?m_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。