我正在使用以下代码从this address读取XML文件。

        XmlDocument xdoc = new XmlDocument();
        xdoc.Load("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");

        XmlNodeList nodeList = xdoc.DocumentElement.SelectNodes("//gesmes/Cube/Cube");

        if (nodeList == null) lblOutput.Text = "node is null";

        foreach (XmlNode node in nodeList)
        {
            XmlNode innerNode = node.SelectSingleNode(".//Cube");

            lblOutput.Text = innerNode.Attributes["currency"].Value;
        }


问题是我什么都没得到。 nodeList.Count总是给我0

最佳答案

您需要正确处理名称空间。
处理它们的方式可能不止一种,这是一种

XmlDocument xdoc = new XmlDocument();
        xdoc.Load("https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml");
        XmlNamespaceManager xnm = new XmlNamespaceManager(xdoc.NameTable);
        xnm.AddNamespace("gesmes", "http://www.gesmes.org/xml/2002-08-01");
        xnm.AddNamespace("eurofxref", "http://www.ecb.int/vocabulary/2002-08-01/eurofxref");

        XmlNodeList nodeList = xdoc.DocumentElement.SelectNodes("//gesmes:Envelope/eurofxref:Cube/eurofxref:Cube", xnm);

        if (nodeList == null)
        {
            var text = "node is null";
        }
        foreach (XmlNode node in nodeList)
        {
            XmlNode innerNode = node.SelectSingleNode(".//eurofxref:Cube", xnm);

            var text = innerNode.Attributes["currency"].Value;
        }

关于c# - 在Asp.net中读取XML没有得到任何结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35087590/

10-16 21:09