C# xml 阅读器,相同的元素名称

标签 c# xml reader

我正在尝试从我的 xml 文件中读取一个元素。 我需要读取“元数据”内“链接”元素中的字符串, 但是有两个元素叫做“链接”,我只需要第二个:

<metadata>
<name>visit-2015-02-18.gpx</name>
<desc>February 18, 2015. Corn</desc>
<author>
    <name>text</name>
    <link href="http://snow.traceup.com/me?id=397760"/>
</author>
<link href="http://snow.traceup.com/stats/u?uId=397760&amp;vId=1196854"/>
<keywords>Trace, text</keywords>

我需要阅读这一行:

<link href="http://snow.traceup.com/stats/u?uId=397760&amp;vId=1196854"/>

这是第一个“链接”标签的工作代码,它工作正常,

        public string GetID(string path)
    {
        string id = "";
        XmlReader reader = XmlReader.Create(path);
        while (reader.Read())
        {
            if ((reader.NodeType == XmlNodeType.Element) && (reader.Name == "link"))
            {
                    if (reader.HasAttributes)
                    {
                        id = reader.GetAttribute("href");
                        MessageBox.Show(id + "= first id");
                        return id;
                        //id = reader.ReadElementContentAsString();
                    }
                }
            }
            return id;
        }

有谁知道如何跳过第一个“链接”元素? 或者检查 reader.ReadElementContentAsString() 是否包含“Vid”或类似的东西?

我希望你能帮助我。

最佳答案

xpath 就是答案:)

        XmlReader reader = XmlReader.Create(path);
        XmlDocument doc = new XmlDocument();
        doc.Load(reader);
        XmlNodeList nodes = doc.SelectNodes("metadata/link");
        foreach(XmlNode node in nodes)
             Console.WriteLine(node.Attributes["href"].Value);

关于C# xml 阅读器,相同的元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33677820/

相关文章:

c# - 无法通过文件上传控件上传文件

c# - 为特定行禁用 jsgrid 的编辑和删除按钮

java - 当我覆盖变量时,我是否需要关闭读取器,或者垃圾收集器是否会关闭它?

c# - PDF 查看器控件的 LoadFile 方法不可见

c# - 如何修复错误 "Only one usage of each socket address is normally permitted"

java - 输入流和BufferedReader

asp.net - 更改 ASP.NET 为 ASP.NET Web 服务生成的 WSDL

php - 选择部分但不是全部子节点

android - 如何将另一个 Activity 作为主 Activity(启动)

c# - 尝试将给定 ID 与数据库中存储的 ID 进行比较