未在xmlnode.selectsinglenode()中设置对象引用 [英] Object reference not set in xmlnode.selectsinglenode()

查看:203
本文介绍了未在xmlnode.selectsinglenode()中设置对象引用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试从XML格式的字符串中获取特定字段的值。



我的代码:

 静态  void  Main( string  [] args)
{
String str;
str = < layer>< auto_delta> null< / auto_delta>< frame-number> 5236< / frame-number>< nb_frames> 45001< / nb_frames>< frames-left> 39765< / frames-left>< frame-age> 160< / frame-age>< producer>< type> ffmpeg< / type>< filename> media \\ JTV.AVI< / filename>< width> 720< / width>< height> 576< / height>< progressive> true< / progressive>< fps> 25< / fps>< loop> false< / loop>< frame-number> 5237< / frame-number>< nb-frames> 45001< / nb-frames>< file-frame-number> 0< / file-frame-number>< file-nb-frames> 45001< / file-nb-frames>< / producer>< background>< producer>< type> empty-producer< / type> < / producer>< / background>< index> 0< / index>< / layer>;
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(str);
string frame_path = layer / producer ;
var nodes_frame = xmlDoc.SelectNodes(frame_path);

尝试
{
foreach (XmlNode childrenNode_frame nodes_frame)
{
Console.WriteLine( Frames: + childrenNode_frame.SelectSingleNode( // file-nb-frames )。Value.ToString()+ 帧率: + childrenNode_frame.SelectSingleNode( // fps)。Value.ToString());
}
}
catch (异常错误)
{
Console.WriteLine(err.ToString( ));
}

Console.Read();
}





现在获取异常对象重新引用未在

 Console.WriteLine(< span class =code-string> 框架: + childrenNode_frame.SelectSingleNode(  // file-nb-frames)。Value.ToString()+  帧速率: + childrenNode_frame.SelectSingleNode(  // fps)。Value.ToString()); 

这一行。



请帮助我。提前致谢。



我的尝试:



我有使用Load()方法。比我还有另外一个例外:附加信息:路径中的非法字符。

解决方案

替换:

。Value.ToString()



使用:

。InnerText 


I am trying to get values from specific fields from a string which is XML format.

My Code:

static void Main(string[] args)
        {
            String str;
            str = "<layer> <auto_delta>null</auto_delta> <frame-number>5236</frame-number> <nb_frames>45001</nb_frames> <frames-left>39765</frames-left> <frame-age>160</frame-age> <producer>  <type>ffmpeg</type>  <filename>media\\JTV.AVI</filename>  <width>720</width>  <height>576</height>  <progressive>true</progressive>  <fps>25</fps> <loop>false</loop> <frame-number>5237</frame-number> <nb-frames>45001</nb-frames>  <file-frame-number>0</file-frame-number>  <file-nb-frames>45001</file-nb-frames> </producer> <background> <producer> <type>empty-producer</type> </producer> </background> <index>0</index></layer>";
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml(str);
            string frame_path = "layer/producer";
            var nodes_frame = xmlDoc.SelectNodes(frame_path);

            try
            {
                foreach (XmlNode childrenNode_frame in nodes_frame)
                {
                    Console.WriteLine("Frames: " + childrenNode_frame.SelectSingleNode("//file-nb-frames").Value.ToString() + " Frame Rate: " + childrenNode_frame.SelectSingleNode("//fps").Value.ToString());
                }
            }
            catch (Exception err)
            {
                Console.WriteLine(err.ToString());
            }

            Console.Read();
        }



Now getting Exception Object re reference not set in

Console.WriteLine("Frames: " + childrenNode_frame.SelectSingleNode("//file-nb-frames").Value.ToString() + " Frame Rate: " + childrenNode_frame.SelectSingleNode("//fps").Value.ToString());

this line.

Please help me. Thanks in advance.

What I have tried:

I have used Load() method. Than I have got another exception as like this: "Additional information: Illegal characters in path."

解决方案

Replace:

.Value.ToString()


With:

.InnerText


这篇关于未在xmlnode.selectsinglenode()中设置对象引用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆