处理XDocument

时间:2015-08-12 04:56:39

标签: c# linq exception null command-line-arguments

我正在使用VS来运行我的代码并抛出异常

  

未处理的类型' System.ArgumentNullException'发生在System.Xml.Linq.dll中。附加信息:值不能为空。

然而,我真的无法弄清楚它为什么会发生。参数来自命令行agrument。有人可以帮我解决问题吗?到目前为止我的代码:

public static XDocument docone;
public static XDocument doctwo;

docone = XDocument.Load(args[3]);
doctwo = XDocument.Load(args[4]);

dealWithXML (docone, doctwo, args);

public static void dealWithXML(XDocument xdoc, XDocument secondxdoc, string[] args)
{
    string select = args[2];
    var xseq = xdoc.XPathSelectElements(select); //exception thrown here
}

XML文件如下:

<bookstore> 
   <book> 
       <barcode>10000</barcode> 
       <author> Ben </author>
   </book> 
   <book> 
       <barcode>200000</barcode> 
       <author>Tom </author> 
   </book> 
</bookstore>

我使用Linqpad转储xseq并且它有效。我很困惑为什么。

1 个答案:

答案 0 :(得分:0)

假设args[3] = "path to xml" and args[2] = "bookstore/book"

            var xdoc = XDocument.Load(args[3]);    
            var parsedXml = x.XPathSelectElements(args[2]);

            foreach (XElement e in parsedXml)
            {
                Console.WriteLine(((XElement)e.FirstNode).Value);
                Console.WriteLine(((XElement)e.LastNode).Value);
            }