Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用visualc从URL读取XML数据_C#_Xml - Fatal编程技术网

C# 如何使用visualc从URL读取XML数据

C# 如何使用visualc从URL读取XML数据,c#,xml,C#,Xml,有1304个关键家庭组 例如: XML格式的季度国民账户 任务是使用id和名称将所有这1304个族合并到一个txt文件中 这是它在txt文件中的外观: QNA |四分之一国民账户 帕特·因德。。。。。 while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: Co

有1304个关键家庭组

例如: XML格式的季度国民账户

任务是使用id和名称将所有这1304个族合并到一个txt文件中

这是它在txt文件中的外观: QNA |四分之一国民账户 帕特·因德。。。。。

 while (reader.Read())
        {
            switch (reader.NodeType)
            {
                case XmlNodeType.Element:
                    Console.Write(reader.Value);

                    while (reader.MoveToNextAttribute()) 
                        Console.Write(reader.Value + "'");
                    Console.Write(">");
                    Console.WriteLine(">");
                    break;
                case XmlNodeType.Text: 
                    Console.WriteLine(reader.Value);
                    break;
                case XmlNodeType.EndElement: 
                    Console.Write("</" + reader.Name);
                    Console.WriteLine(">");
                    break;
            }
        }

<KeyFamily id="QNA" agencyID="OECD">...</KeyFamily>
<KeyFamily id="PAT_IND" agencyID="OECD">...</KeyFamily>
<KeyFamily id="SNA_TABLE11" agencyID="OECD">...</KeyFamily>
<KeyFamily id="EO78_MAIN" agencyID="OECD">
<Name xml:lang="en">
Economic Outlook No 78 - December 2005 - Annual Projections for OECD Countries
</Name>

尝试以下使用xml linq的方法:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
using System.IO;


namespace ConsoleApplication108
{
    class Program
    {
        const string XML_FILENAME = @"c:\temp\test.xml";
        const string URL = "https://stats.oecd.org/restsdmx/sdmx.ashx/GetDataStructure/all";
        const string TEXT_FILENAME = @"c:\temp\test.txt";
        static void Main(string[] args)
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.CheckCharacters = false;
            //XmlReader reader = XmlReader.Create(XML_FILENAME, settings);
            XmlReader reader = XmlReader.Create(URL, settings);
            StreamWriter writer = new StreamWriter(TEXT_FILENAME);
            while (!reader.EOF)
            {
                if (reader.Name != "KeyFamily")
                {
                    reader.ReadToFollowing("KeyFamily");
                }
                if (!reader.EOF)
                {
                    XElement keyFamily = (XElement)XElement.ReadFrom(reader);

                    List<string> columns = new List<string>();
                    columns.Add((string)keyFamily.Attribute("id"));
                    //string agencyID = (string)keyFamily.Attribute("agencyID");
                    columns.AddRange(keyFamily.Elements().Where(x => x.Name.LocalName == "Name").Select(x => (string)x));

                    writer.WriteLine(string.Join("|", columns));
                }
            }
            writer.Flush();
            writer.Close();

        }

    }


}

需要知道xml文件的结构。。您可以发布一个链接或显示一个带有root和nodethan的xml示例吗?非常感谢您的帮助!请遵循包含根和节点的xml的链接:xml无效。包含一个符号:渔业研发支出。请参阅Wiki:我更新了使用XML链接的代码。如果从URL调用If,If可以工作,但如果我将XML放入文件中,If将失败。请您解释一下如何仅以英文输出:XML:lang=en?非常感谢你!更改一行:columns.AddRangekeyFamily.Elements.Wherex=>x.Name.LocalName==Name&&stringx.Attributes.First==en.Selectx=>stringx;