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>
有人能让我知道问题,我该如何解决,我能与元素标签只工作,而不是属性。谢谢你
使用强制转换代替访问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">