【问题标题】:LINQ TO XML attribute tag give no object reference errorLINQ TO XML 属性标记不给出对象引用错误
【发布时间】:2013-01-16 17:55:36
【问题描述】:

你好,我正在按照以下方式进行操作

 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>

有人可以告诉我这个问题,我该如何解决,我可以只使用元素标签而不是属性。谢谢你

【问题讨论】:

    标签: c# xml linq-to-xml


    【解决方案1】:

    使用强制转换而不是访问Value 属性。转换为字符串将为不存在的元素返回 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")
            };
    

    顺便说一句,您需要&lt;DocumentElement&gt; 的结束标记。 LS_CZIP4 也是元素,而不是属性。在这里查看区别XML Elements vs. Attributes

    元素:&lt;LS_LIN&gt;abc&lt;/LS_LIN&gt;

    属性:&lt;autoivr.ok LS_LIN="abc"&gt;

    【讨论】:

    • 你能解释一下这里的 LS_CZIP 是元素而不是属性吗?如果我们必须查询 xml 文件,是否可以使用元素而不是属性
    • @ffayyaz 我添加了 LS_LIN 的示例作为属性和元素。如果您的项目是 xml 中的属性,您应该查询属性。如果项目是元素,则查询元素。基于 xml 结构构建查询。
    • 谢谢,所以我的 xml 结构很好,因为我有一个名为 autoivr.ok 的表,并且表有多个列和行,因此表中的每一列都表示为 xml 文件中的一个元素,依此类推。
    • @ffayyaz 实际上我会使用 autroivrs 作为根元素,每行使用 autoivr 子元素。但是您当前的 xml 结构也可以使用。
    • 类似于 元素 元素
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多