c# Linq到XML到对象不能在XAMARIN (ios)中工作
本文关键字:ios 工作 XAMARIN Linq XML 对象 不能 | 更新日期: 2023-09-27 18:12:52
我有一个问题,从一个webservice到xamarin (ios)的自定义类的XML结果。
我调用了一个Webservice,得到了以下结果:
<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfCO_App_Table_CO_VERTRETERFTPLOGIN xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<CO_App_Table_CO_VERTRETERFTPLOGIN>
<id>2</id>
<PERSONAL>max.mustermann</PERSONAL>
<FTP>127.0.0.1</FTP>
<USERNAME />
<PASSWORD />
<DIRECTORY />
<ACTIVE>1</ACTIVE>
<USERDOMAIN />
<ZIPFILENAME>bla.zip</ZIPFILENAME>
<DBFILENAME>bla.db</DBFILENAME>
</CO_App_Table_CO_VERTRETERFTPLOGIN>
</ArrayOfCO_App_Table_CO_VERTRETERFTPLOGIN>
我想把它插入到一个类中。
public class co_vertreterftplogin
{
public string id { get; set; }
public string INVERT { get; set; }
public string PERSONAL { get; set; }
public string FTP { get; set; }
public string USERNAME { get; set; }
public string PASSWORD { get; set; }
public string DIRECTORY { get; set; }
public string ACTIVE { get; set; }
public string USERDOMAIN { get; set; }
public string ZIPFILENAME { get; set; }
public string DBFILENAME { get; set; }
}
我代码:var xmldoc = XDocument.Parse(result);
XElement dx = xmldoc.Elements().FirstOrDefault();
var data = (from item in dx.Elements().FirstOrDefault().Descendants()
select new Database.Tabellen.co_vertreterftplogin
{
id =item.Element("id").Value,
PERSONAL="",
FTP="",
USERNAME="",
PASSWORD="",
DIRECTORY="",
ACTIVE="",
USERDOMAIN="",
ZIPFILENAME="",
DBFILENAME=""
});
Database.Tabellen.co_vertreterftplogin bla = data.First ();
我的问题是data.First()总是null。或者换句话说,"我的代码不工作":-)
Thx转发
这里有几个问题。首先,我相信你对Elements
/Descendants
有太多的调用,所以你实际上是在迭代<CO_App_Table_CO_VERTRETERFTPLOGIN>
的所有后代。其次,在获取id
元素时没有指定名称空间。由于根元素中的这个属性:
xmlns="http://tempuri.org/"
其余所有元素都在该名称空间中。所以你想要:
XNamespace ns = "http://tempuri.org/";
var doc = XDocument.Parse(result);
var data = doc.Root // ArrayOfCO_App_Table_CO_VERTRETERFTPLOGIN
.Elements() // CO_App_Table_CO_VERTRETERFTPLOGIN
.Select(x => new Database.Tabellen.co_vertreterftplogin
{
id = (string) x.Element(ns + "id"),
...
});
我还要强烈建议您重新考虑类型和属性的命名,以遵循。net的命名约定。