使用LINQ读取XML字符串

5
我正在从我的 Silverlight 应用程序调用 SharePoint 服务/_vti_bin/usergroup.asmx。其中方法GetAllUserCollectionFromWeb()返回 XML 字符串。我需要遍历该 XML 字符串以获取所需的数据。但是,在这种情况下,LINQ to XML 不起作用,因为它在加载 XML 文件并获取所需数据时才起作用。如何使用 XML 字符串实现与 LINQ to SQL 相似的功能?
示例代码:
string str = @"<LanguageDetails>
                        <UserNode>
                            <Lang>
                                English
                            </Lang>
                        </UserNode>
                    </LanguageDetails>";

需要使用LINQ to XML处理相似的字符串并迭代读取值。

你能否发布代码展示你想要实现的结果?同时,接受其他问题的答案! - Kyle Trauberman
你考虑过使用XPath吗?http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathdocument.aspx - Rumplin
但是XPath也期望加载XML文件,而不是直接加载XML字符串。Rumpin。 - Mohan Kumar
因此,创建一个XmlReader或XmlDocument http://msdn.microsoft.com/en-us/library/w8k674bf.aspx。这样,如果字符串实际上是XML,您也可以进行验证。 - Rumplin
2个回答

6
你是指像这样的内容吗?
string str = @"<LanguageDetails>
                   <UserNode>
                       <Lang>
                           English
                       </Lang>
                   </UserNode>
               </LanguageDetails>";
XElement xLanguageDetails = XElement.Parse(str);
foreach (XElement xUserNode in xLanguageDetails.Elements("UserNode"))
{            
}

是的,但XElement.Load()期望传递文件路径或流。直接传递str不起作用。阿方索 - Mohan Kumar
我的错误。请使用XElement.Parse()。 - alf
1
它可以正常解析字符串。但无法对其进行迭代,始终为所有元素返回null。 - Mohan Kumar
@mhn - 请编辑您的问题并发布您的代码,以便我们查看。 - alf
2
如果所有元素都返回 null,也许涉及到一些 XML 命名空间?您想解析的实际 XML 是什么? - Grynn

1
在进行LINQ to XML查询时,几乎所有返回零行的情况都是因为XML中存在命名空间。请检查根节点是否有任何命名空间,并在LINQ查询中包含它们。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接