LINQ TO XML属性标签没有给出对象引用错误

本文关键字:对象引用 错误 TO XML 属性 标签 LINQ | 更新日期: 2023-09-27 17:53:27

你好,我正在做下面的事情

 XDocument xmlDoc = XDocument.Load(@"F:'test2.xml");
        var q = from c in xmlDoc.Descendants("autoivr.ok")
                where c.Element("LS_CZIP4").Value == "1234"
                select new
                {
                    name = c.Element("LS_LIN").Value,
                    state = c.Element("LS_STATE").Value                        
                };

当我使用c.attribute("LS_CZIP4")。Value == "1234"我得到对象引用未设置的错误,但当我使用c.element时,没有这样的错误。

下面是我制作的xml,它实际上是一个sql表转换成xml文件

<?xml version="1.0" standalone="yes"?>
<DocumentElement>
   <autoivr.ok>
      <LS_LIN>abc</LS_LIN>
      <LS_STATE>def</LS_STATE>
      <LS_TYPE>5</LS_TYPE>
      <LS_CZIP4>1234</LS_CZIP4>
   <priority>0</priority>
   </autoivr.ok>

有人能让我知道问题,我该如何解决,我能与元素标签只工作,而不是属性。谢谢你

LINQ TO XML属性标签没有给出对象引用错误

使用强制转换代替访问Value属性。对于不存在的元素,强制转换为string将返回null。获取Value将抛出异常

XDocument xmlDoc = XDocument.Load(@"F:'test2.xml");
var q = from c in xmlDoc.Descendants("autoivr.ok")
        where (string)c.Element("LS_CZIP4") == "1234"
        select new
        {
            name = (string)c.Element("LS_LIN"),
            state = (string)c.Element("LS_STATE")
        };

BTW你需要关闭标签的<DocumentElement>。而且LS_CZIP4是元素,而不是属性。XML元素与属性的区别

元素:<LS_LIN>abc</LS_LIN>

属性:<autoivr.ok LS_LIN="abc">