Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c xml解析-从php转换_C#_Xml_Api - Fatal编程技术网

C# c xml解析-从php转换

C# c xml解析-从php转换,c#,xml,api,C#,Xml,Api,我目前在PHP上安装了我的应用程序/项目,我正试图让它在c中工作,这样我就可以围绕它构建一个应用程序 我遇到了代码的一些部分,我正在寻找帮助 XML数据来自: 上面是来自某个系统的XML数据,其中包含两个与另一个XML相同的TypeID,同样,每次大约有100个项目 我目前正在使用此代码: XDocument doc = XDocument.Load("http://api.eve-central.com/api/marketstat?typeid=34&typeid=35&us

我目前在PHP上安装了我的应用程序/项目,我正试图让它在c中工作,这样我就可以围绕它构建一个应用程序

我遇到了代码的一些部分,我正在寻找帮助

XML数据来自: 上面是来自某个系统的XML数据,其中包含两个与另一个XML相同的TypeID,同样,每次大约有100个项目

我目前正在使用此代码:

XDocument doc = XDocument.Load("http://api.eve-central.com/api/marketstat?typeid=34&typeid=35&usesystem=30000142");

var id = from stats in doc.Root.Elements("marketstat")
         from type in stats.Elements("type")
         select new
         {
           typeID = type.Attribute("id").Value
         };

foreach (var itemids in id)
{
  kryptonListBox4.Items.Add(itemids.typeID);
};
将列表框填充为34和456

我需要的是能够添加其他xml数据,如min sell和max buy

我可以这样获得第一次销售:

string minSell = doc.Descendants("sell")
      .First()
      .Element("min")
      .Value;
但是我需要有与typeID相关的minsell,并且能够处理数据

第二个问题 XML数据来自 上面是来自某个区域的XML数据,包含2个类型ID。当一次完成大约100个项目时,这将是一个更大的列表

我曾尝试使用与上面类似的代码,但无法让它返回正确的数据

我需要能够得到每个typeid的总音量

在PHP中,我使用以下方法:

foreach ($xml -> result -> rowset-> row as $row)
{
    $id = (string)$row['typeID'];
    $volume = $row['volume'];
    if (!isset($volumes[$id]))
    {
        $volumes[$id] = 0;
    }
    $volumes[$id] = $volumes[$id] + $volume;       
}
任何帮助都将不胜感激

//编辑:看来我可以用

var vRow = from xmlRow in marketstats.Descendants("emd").Descendants("result").Descendants("rowset").Descendants("row")
                   select xmlRow;

对于第二个问题,但对于第二个问题,我似乎无法让多维数组正常工作

如果我的理解正确,这将接近您的需要

var strxml = File.ReadAllText(@"D:\item_history2.xml");

        var xml = XElement.Parse(strxml);

        var typeIDs = (from obj in xml.Descendants("row")
                       select obj).Select(o => o.Attribute("typeID").Value).Distinct();


        Dictionary<string, long> kv = new Dictionary<string, long>();

        foreach (var item in typeIDs)
        {

            var sum = (from obj in xml.Descendants("row")
                       select obj).Where(o => o.Attribute("typeID").Value == item).Sum(p => long.Parse(p.Attribute("volume").Value));

            kv.Add(item, sum);
        }
这将为您提供与typeid相关的minsell值。 我猜这就是你所期望的?
如果有错误,请发表评论。

对于第一个问题,您可以在xml中包含属性并对其进行查询如果您有这样的xml Data1 Data12 Data3,现在您可以根据其ID获取数据标记,与数据库完全相同抱歉,我不明白您的意思,我尝试过的代码我已经发布了。我已经尝试获取属性,但它不起作用。我的解决方案可能很接近……您能详细说明第一个问题吗。对不起,我没有完全理解。请用第一个问题的任何例子详细说明一下,我没有领会。我会帮你的
var minsell = (from obj in xml.Descendants("type")
                       select new
                       {
                           typeid = obj.Attribute("id").Value,
                           minsell = obj.Descendants("sell").Descendants("min").FirstOrDefault().Value
                       }
                       ).ToArray();