【问题标题】:How to read XML with name/value pair in c#? [duplicate]如何在 C# 中使用名称/值对读取 XML? [复制]
【发布时间】:2026-01-15 05:50:01
【问题描述】:

如何在c#中读取这种类型的XML?有示例代码吗?

<?xml version="1.0" encoding="ISO-8859-1" ?>
 <row rownum="1">
    <column colnum="1" name="PROJECT NUMBER">1</column>
    <column colnum="2" name="ROLE">Project Manager</column>
    <column colnum="3" name="FIRSTNAME">Angie</column>
    <column colnum="4" name="LASTNAME">Emanual</column>
</row><row rownum="2">
    <column colnum="1" name="PROJECT NUMBER">2</column>
    <column colnum="2" name="ROLE">Developer</column>
    <column colnum="3" name="FIRSTNAME">Ruha</column>
    <column colnum="4" name="LASTNAME">Rao</column>
</row>

【问题讨论】:

标签: c# xml


【解决方案1】:

以下代码将读取xml片段

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

namespace ConsoleApplication29
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlReaderSettings settings = new XmlReaderSettings();
            settings.ConformanceLevel = ConformanceLevel.Fragment;

            XmlReader reader = XmlTextReader.Create(FILENAME,settings);
            List<object> results = new List<object>();
            while (!reader.EOF)
            {
                if (reader.Name != "row")
                {
                    reader.ReadToFollowing("row");
                }
                if (!reader.EOF)
                {
                    XElement row = (XElement)XElement.ReadFrom(reader);
                    results.Add(new object[] {
                        row.Elements("column").Select(y => new {
                            rowNum = (int)row.Attribute("rownum"),
                            colNum = (int)y.Attribute("colnum"),
                            colName = (string)y.Attribute("name"),
                            value = (string)y
                        }).FirstOrDefault()
                    });

                }
            }
        }

    }
}

【讨论】: