C# c xml解析-从php转换
我目前在PHP上安装了我的应用程序/项目,我正试图让它在c中工作,这样我就可以围绕它构建一个应用程序 我遇到了代码的一些部分,我正在寻找帮助 XML数据来自: 上面是来自某个系统的XML数据,其中包含两个与另一个XML相同的TypeID,同样,每次大约有100个项目 我目前正在使用此代码: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
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();