-1

我有想要通过 C# 中的 xpath 读取的 XML 文件

我的 XML 将如下所示:

<?xml version="1.0"?>
<doc>
     <members>
        <member test="testing" name="T:QuexstBase.Tools.RegistryHelper.RegistryHelper">
            <summary>
            RegistryHelper class to use registry operations.
            </summary>
        </member>
        <member test="testing" name="F:QuexstBase.Tools.RegistryHelper.RegistryHelper.baseKey">
            <summary>
            private member base key
            </summary>
        </member>
        <member  test="tester"  name="F:QuexstBase.Tools.RegistryHelper.RegistryHelper.subKey">
            <summary>
            default sub key
            </summary>
        </member>
    </members>
</doc>

我想读/members/member/@test的值是测试。我不想为这些使用 foreach 或 for 循环。

4

3 回答 3

3
var xDoc = XDocument.Parse(xml);//or XDocument.Load(fileName)
var members = xDoc.XPathSelectElements("//member[@test='testing']")
                  .ToList();
于 2012-10-30T07:21:13.543 回答
1

尝试使用XmlDocument

XmlDocument document = new XmlDocument();
document.LoadXml("your xml string");
var nodes = document.SelectNodes("/members/member/@test");
//or for single node  
var node = document.SelectSingleNode("/members/member/@test");
于 2012-10-30T07:41:15.450 回答
1
var xml = @"<doc>
        <members>
        <member test=""testing"" name=""T:QuexstBase.Tools.RegistryHelper.RegistryHelper"">
            <summary>
            RegistryHelper class to use registry operations.
            </summary>
        </member>
        <member test=""testing"" name=""F:QuexstBase.Tools.RegistryHelper.RegistryHelper.baseKey"">
            <summary>
            private member base key
            </summary>
        </member>
        <member  test=""tester""  name=""F:QuexstBase.Tools.RegistryHelper.RegistryHelper.subKey"">
            <summary>
            default sub key
            </summary>
        </member>
    </members>
</doc>";

var ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(xml));
var doc = new XPathDocument(ms);
var nav = doc.CreateNavigator();
var nodes = nav.Select("//member[@test='testing']");

更新:看看这篇文章XDocument 或 XmlDocument

于 2012-10-30T07:31:11.603 回答