【问题标题】:read multiple Xelements in C# from a XML file从 XML 文件中读取 C# 中的多个 Xelement
【发布时间】:2018-11-02 16:28:03
【问题描述】:

我目前正在寻找一种将多个 XElement 中的属性读取到数组中的方法,但我不知道如何做。 我的 XML 文件如下所示:

<transaction date="02.11.2018" product="product1" price="0,1$" amount="1" profit="0,1$" />
<transaction date="02.11.2018" product="product2" price="1$" amount="1" profit="1€" />
<transaction date="02.11.2018" product="product1" price="1$" amount="3" profit="3$" />

【问题讨论】:

  • 你有什么理由“每行一个元素”而不是真正的 XML 文档?
  • 您还不清楚“将多个 XElement 中的属性读取到一个数组中”是什么意思——您希望输出是什么? IMO,这个问题目前还不够清楚,无法回答。
  • 同意这不是一个有效的 XML 文档。

标签: c# xml xelement


【解决方案1】:

然后创建 KeyValuePair

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

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

            var results = doc.Descendants("transaction").Select(x => x.Attributes().Select(y => new KeyValuePair<string, string>(y.Name.LocalName, y.Value)).ToArray()).ToArray();

        }


    }


}

【讨论】:

  • OP 似乎没有有效的 XML 文档,而是包含三行的文件,每行都是一个单独的元素。
  • 没关系。我的代码使用 Descendant 来获取数据。我在测试时添加了一个 Root 。 OP 没有足够的知识来发布正确数量的数据。人们对过多的数据和工具很少的数据给予负面评价。答案不应该被评价为 OP 缺乏知识。
  • 假设 OP 有一个真正的XML 文档。如果他们不这样做,那绝对很重要。我也不认为 OP 没有提供足够的信息来说明他们希望如何表示属性。我认为回答一个基本上太不清楚的问题不是一个好主意。 (OP 真的想要 KeyValuePair 元素吗?他们可能只使用 XAttribute 实例本身就可以了吗?问题中没有什么可以说的......)
  • 所以我的答案可能是这个人想要的确切答案,但我得到了否定的分数。如果这个人想要修改我的代码,这很容易做到。
  • 我认为它不是当前形式的有用答案,而且对于当前形式的问题,一个体面的答案确实不可行。当然,你可以不同意我的观点——但我怀疑我们中的任何一个都无法说服对方。
猜你喜欢
  • 1970-01-01
  • 2016-05-19
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
相关资源
最近更新 更多