【问题标题】:How can I get the attribute values for all the elements that's in an XML file using C#?如何使用 C# 获取 XML 文件中所有元素的属性值?
【发布时间】:2019-09-30 20:04:07
【问题描述】:

我正在尝试提取此 XMl 文件(下面的 XML)中每个元素的属性值。我想要以下属性值:类型、标签、CompTypes、只读、隐藏和必需。

【问题讨论】:

  • 这不是一个 xml 文件,它是一个 xml 模式。你有真正的xml吗?
  • 嗨@jdweng,不,这是我正在使用的唯一文件。我只需要从这个文件中提取数据。
  • 您是否编辑过文件?我见过很多带有嵌入式架构的 XML 文件。 schema 部分指定没有值的类型,而 xml 部分分配值。您的 Xml 文件不符合正常的嵌入式架构标准。模式部分正在分配值而不是声明类型。然后没有Xml部分。

标签: c# .net xml xml-parsing


【解决方案1】:

试试:

var csv = string.Join(Environment.NewLine, XDocument.Load(@"D:\New Text Document.xml").Descendants()
            .Where(element => element.Name.LocalName.Equals("element", StringComparison.CurrentCultureIgnoreCase))
            .Select(x => new CustomElements()
            {
               Type = x.Attribute("type")?.Value,
               Label = x.Attribute("label")?.Value,
               CompTypes = x.Attribute("CompTypes")?.Value,
               Readonly = x.Attribute("readonly")?.Value,
               Hidden = x.Attribute("hidden")?.Value,
               Require = x.Attribute("required")?.Value
            }).Select(x => $"{x.Type}, {x.Label}, {x.CompTypes?.Replace(";", ",")}, readonly=\"{x.Readonly}\", hidden=\"{x.Hidden}\", required=\"{x.Require}\""));

【讨论】:

  • 嗨@Matt,如果你不介意,可以把这段代码放在CS模板中吗?我正在尝试您的步骤,但我在 Visual Studio 中看到许多红色波浪线。我只是想看看我是否遗漏了什么。谢谢。
  • 添加这两个包含语句:using System.Linq; using System.Xml.Linq;
  • 您好@Matt,那么在获取数据后,我怎样才能将该信息自动输出到 CSV 文件中?有没有办法创建 CSV 文件?
  • 试试 File.WriteAllText(filePath, csv);
  • 那么,我会在主目录中添加这个 File.WriteAllText(filePath, csv) 吗?我的场景中的文件路径应该是 D 盘正确吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-26
  • 2011-04-27
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多