问题阅读的XElement属性
-
19-09-2019 - |
题
任何人都知道为什么这xpath表达式"catzero/@id"
并未在此 XML 工作p>
document = XDocument.Load("file.xml");
var product = document.XPathSelectElements("//product", nameSpaceResolver).First();
var category = ((IEnumerable) product.XPathEvaluate("catzero/@id")).Cast<XAttribute>().first().value; //catezero/@id is null
解决方案
您输入XPath表达式成的XElement()?结果 使用XPath你应该尝试的http:// msdn.microsoft.com/en-us/library/system.web.ui.templatecontrol.xpathselect.aspx
其他提示
XPath和LINQ到XML(XEelement)通常不匹配 - LINQ到XML使用它自己的方式来遍历XML文档
。在你的情况,你可以这样做:
XDocument doc = XDocument.Load("http://www.quillarts.com/Test/Feed2.xml");
foreach(XElement xe in doc.Descendants("product"))
{
if(xe.Element("catzero") != null)
{
var attr = xe.Element("catzero").Attribute("id");
if(attr != null && attr.Value == "20")
{
string elementValue = xe.Value;
}
}
}
我不从你的问题知道你想用这些元素做什么和/或属性 - 先走一步,做任何你需要做的。
编写它为:
var product = document.XPathSelectElements("//product", nameSpaceResolver).First();
IEnumerable at = (IEnumerable)product.XPathEvaluate("catzero/@id");
var category = at.Cast<XAttribute>().First<XAttribute>().Value;
如果您希望类的价值为20工作正常,我。
它工作正常,我(定影在F
的First()
,在V
的Value
,并通过一个null
命名空间分解器),得到类“20”。你期望不同的东西?如果有的话,为什么?
同样地:
string category = document.Descendants("product").First()
.Elements("catzero").Attributes("id").First().Value;
给出 “20”。
不隶属于 StackOverflow