我怎样才能得到XElement的孩子? 我目前正在使用XElement.Descendants()函数,它返回所有级别的XElements,而不仅仅是子节点。 我真正喜欢的是一个IEnumerable只是孩子。
考虑以下XML: <response> <status_code>200</status_code> <status_txt>OK</status_txt> <data> <url>http://bit.ly/b47LVi</url> <hash>b47LVi</hash> <global_hash>9EJa3m</global_hash> <long_url>http://www.tumblr.com/docs/en/api#api_write</long_url> <new_hash>0</new_hash> </data> </response> 我正在寻找一个非常简短的方法来获取<hash>元素的值。 我试过了: var hash = xml.Element("hash").Value; 但是这不起作用。 有没有可能为XElement提供XPath查询? 我可以用旧的System.Xml框架来做,就像这样做: xml.Node("/response/data/hash").Value 在LINQ命名空间中是否有这样的东西? 更新: 在这个瞎猜之后,我发现了一个办法来做我想做的事情: var hash = xml.Descendants("hash").FirstOrDefault().Value; 我仍然有兴趣看看有没有更好的解决scheme?
我在文档中有一个XElement。 鉴于XElement(和XDocument?),是否有扩展方法来获得它的完整(即绝对,例如/root/item/element/child )XPath? 例如myXElement.GetXPath()? 编辑:好吧,看起来像我忽视了一些非常重要的东西。 哎呦! 元素的索引需要考虑在内。 请参阅我的最后一个答案提出更正解决scheme。
在下面的代码中获取混合body元素的内容的最好方法是什么? 该元素可能包含XHTML或文本,但我只是希望其内容的stringforms。 XmlElementtypes具有InnerXml属性,这正是我所追求的。 写的代码几乎做我想要的,但包括周围的<body> … </body>元素,我不想要的。 XDocument doc = XDocument.Load(new StreamReader(s)); var templates = from t in doc.Descendants("template") where t.Attribute("name").Value == templateName select new { Subject = t.Element("subject").Value, Body = t.Element("body").ToString() };