【问题标题】:Read an XML File and transform data into a list of DirectoryInfo elements读取 XML 文件并将数据转换为 DirectoryInfo 元素列表
【发布时间】:2016-06-06 00:13:29
【问题描述】:

我目前正在尝试读取这种格式的 XML 文件以将其转换为列表,但尝试 cmets 中的代码给我一个错误:这就是它在 IE 中的样子。显然后面有一个关闭的资产标签和关闭属性

  <Properties>
- <Assets>
- <Asset Name="" Version="">
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" /> 
  <TestCase Name="" Version="" SubVersion="" />  
  </Asset>

所以我这样做了:

XmlReader xReader = XmlReader.Create(new StringReader(xmlDoc));

在哪里xml doc = @"\\visreP01\REFERENCES\default.reference.versions\default.reference.versions.properties.xml"

我正计划测试如何迭代名称和版本等以迭代地将它们放入列表中。但是在阅读过程中,我得到的数据根级别是无效的第 1 行位置 1。

【问题讨论】:

标签: c# xml xmlreader


【解决方案1】:

试试这个

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

namespace ConsoleApplication1
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {

            XmlReader xReader = XmlReader.Create(FILENAME);

            while(!xReader.EOF)
            {
                if (xReader.Name != "Asset")
                {
                    xReader.ReadToFollowing("Asset");
                }
                if (!xReader.EOF)
                {
                    XElement assets = (XElement)XElement.ReadFrom(xReader);
                    var results = assets.Elements("TestCase").Select(x => new
                    {
                        name = (string)x.Attribute("Name"),
                        version = (string)x.Attribute("Version"),
                        subVersion = (string)x.Attribute("SubVersion")
                    }).ToList();


                 }
            }
        }
    }
}

【讨论】:

  • 我正在尝试使用此解决方案,但我得到根级别的数据无效。第 1 行,位置 1。我正在尝试定位位于我计算机上某处的 XML 文件。我会编辑我的主要帖子,让你告诉我出了什么问题
  • 确保 xml 文件开头没有任何空格。您可以在 VS 中验证 xml,在菜单中执行以下操作:1) 项目:添加新项目:XML 文件。将 xml 粘贴到视图中。错误将像任何其他编译器错误一样显示在错误列表中。
  • 文件中是否有标识行:.
  • 是的,实际上它在我打开 IE 时会显示:这是第一个 -> 然后它开始 -
  • 如果你从一个文件中读取你只需要: XmlReader xReader = XmlReader.Create(FILENAME);不需要 StringReader。
猜你喜欢
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
相关资源
最近更新 更多