如何获取XML节点名称?

时间:2017-06-09 02:57:56

标签: c# xml linq serialization

我正在做一个挑战,但我很难获得XML节点的名称,“文件夹”。我试图返回所有以'u'开头的文件夹。

我想输出为“Uninstall Information”和“Users”,但我仍然拥有所有XML结构。

任何帮助都会很棒。

 class Program
    {
        public static IEnumerable<string> FolderNames(string xml, char startingLetter)
        {
            List<string> elem = new List<string>();
            List<int> list = new List<int>();

            XmlDocument xmldoc = new XmlDocument();
            xmldoc.LoadXml(xml);

            XmlNodeList temp = xmldoc.SelectNodes("folder");

             elem.Add(temp[0].InnerXml);
             Console.WriteLine(elem[0]);

            return elem;
        }

        public static void Main(string[] args)
        {
            string xml =
                "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
                "<folder name=\"c\">" +
                "<folder name=\"program files\">" +
                "<folder name=\"uninstall information\" />" +
                "</folder>" +
                "<folder name=\"users\" />" +
                "</folder>";

            Program.FolderNames(xml, 'u');

            //foreach (string name in Program.FolderNames(xml, 'u'))
                //Console.WriteLine(name);
        }
    }
}

1 个答案:

答案 0 :(得分:1)

以下代码显示了如何使用XPath表达式选择以XML中的特定字母开头的文件夹名称。该XPath包含以下部分:

url(r'^login/', rest_auth_views.obtain_auth_token), 选择所有“文件夹”XML元素(包括子文件夹)
//folder选择这些元素的属性“name” /@name是仅选择以指定字母

开头的属性的条件
[starts-with(., 'u')]