【问题标题】:How to get the XML node name? [duplicate]如何获取 XML 节点名称? [复制]
【发布时间】:2023-04-04 14:23:01
【问题描述】:

我正在做一件具有挑战性的事情,但我正在努力获取 XML 节点的名称“文件夹”。我正在尝试返回所有以“u”开头的文件夹。

我想输出“卸载信息”和“用户”,但我仍然拥有所有 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);
        }
    }
}

【问题讨论】:

  • 我建议阅读有关 XML 的内容...“节点名称”与您似乎正在寻找的完全不同。基本的 Wikipeda 文章可能是 en.wikipedia.org/wiki/XML#Key_terminology 改善您的帖子 edit 的良好开端。此外,您实际尝试执行的任何任务都可能有很多重复项。

标签: c# xml linq serialization


【解决方案1】:

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

//folder 选择所有“文件夹”XML 元素(包括子文件夹)
/@name 选择这些元素的属性“名称”
[starts-with(., 'u')] 是仅选择以指定字母开头的属性的条件

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

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

    foreach (XmlAttribute folderName in xmldoc.SelectNodes("//folder/@name[starts-with(., '"+ startingLetter +"')]"))
    {
        elem.Add(folderName.Value);
        Console.WriteLine(folderName.Value);
    }

    return elem;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 2012-03-06
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多