我有一个xml,如:
<RunResult>
<PreviewRecords></PreviewRecords>
<RecordsProcessed>100</RecordsProcessed>
<LogError>false</LogError>
</RunResult>
我使用以下命令来获取节点RecordsProcessed
的值,
int NofRecords = 0;
NofRecords = Convert.ToInt32(xdRunResultDoc.Root.Element("RunResult").Element("RecordsProcessed").Value;
但是在这一行它抛出异常“对象引用未设置为对象的实例”。
请建议我出错的地方。
答案 0 :(得分:2)
xdRunResultDoc.Root
已指向<RunRdesult>
元素,因此您无需再次致电Element("RunResult")
。
我建议在(int)
而不是XElement
上使用Convert.ToInt32
广告投放:XElement Explicit Conversion (XElement to Int32)
int NofRecords = (int)xdRunResultDoc.Root.Element("RecordsProcessed");
答案 1 :(得分:0)
试试这个
int NofRcord = Convert.ToInt32(xdRunResultDoc.Root.Element("RecordsProcessed").Value);
,请参阅此链接
答案 2 :(得分:0)
这对我有用:
string xmlstring = @"<?xml version='1.0' encoding='utf-8'?>
<RunResult>
<PreviewRecords></PreviewRecords>
<RecordsProcessed>100</RecordsProcessed>
<LogError>false</LogError>
</RunResult>";
System.Xml.Linq.XDocument doc = XDocument.Parse(xmlstring);
int NofRecords = 0;
NofRecords = Convert.ToInt32(doc.Element("RunResult").Element("RecordsProcessed").Value);
答案 3 :(得分:0)
您可以自己找到解决方案,为什么不调试并查看导致“对象引用未设置为对象实例的错误?
您可以将监视添加到xdRunResultDoc
,在运行时可以检查根节点是什么以及xdRunResultDoc.Root.Element("RunResult")
等获得的内容。
此处您的根节点为RunResult
,您无法在名为RunResult
的根节点内找到元素
答案 4 :(得分:0)
试试此代码
从xml文件中读取整个文本并将其加载到XmlDocument
XmlNode rootNode = xDoc.SelectSingleNode("RunResult");
if (rootNode.HasChildNodes)
{
foreach (XmlNode node in rootNode.ChildNodes)
{
if (node.Name =="RecordsProcessed")
{
NofRecords=Convert.ToInt32(node.InnerText);
}
}
}