有1304个KeyFamily组。
例如: XML季度国民帐户。
任务是使用id和Name将所有1304系列合并到一个txt文件中
这是它在txt文件中的样子: QNA |季度国民账户 PAT_IND | ..... .... | ....
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>
答案 0 :(得分:0)
尝试以下使用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();
}
}
}