[英]C# - Displaying data from an XML file in a listbox from a Dictionary
我有一个包含数据的XML文件,我只想在一页上显示组织的,而在另一页上显示相应的数据(地址,ID)。 在文本框中。
XML:
<Data>
<Organisation>
<Name>Accident Compensation Corporation</Name>
<ID> 022 12345678 </ID>
<Address> 220 Bunny Street</Address>
</Organisation>
<Organisation>
<Name>Test 2</Name>
<Address> 50 Lambton Quay</Address>
<ID> 021 8972468739 </ID>
</Organisation>
</Data>
我已将此数据提取到C#中,并且当前存储在字典中。 在单独的C#类文件中。
public class Organisation
{
public int id;
public string name;
public string address;
public Organisation(int id, string name, string address)
{
this.id = id;
this.name = name;
this.address = address;
}
}
}
这就是我加载XML节点并尝试在列表框中显示它们的条件。 但是,它无法在“尝试”中执行此操作,并跳至显示“错误”的“捕获”
XmlNodeList names = doc.GetElementsByTagName("Name");
XmlNodeList ids = doc.GetElementsByTagName("ID");
XmlNodeList addresses = doc.GetElementsByTagName("Address");
for (int i = 0; i < names.Count; i++)
{
Organisation org = new Organisation(int.Parse(ids[i].InnerText), names[i].InnerText, addresses[i].InnerText);
Database.data.Add(org);
}
foreach (Organisation org in Database.data)
{
directoryBox.Items.Add(org.name);
}
}
catch
{
Response.Write("ERROR");
}
}
}
这是第二页上的代码,将它们放在文本框中
if (!IsPostBack)
{
foreach (Organisation org in Database.data)
{
if (org.name.Equals(Session["Org"]))
{
orgLabel.Text = org.name;
lastcontractorBox.Text = org.id.ToString();
buildingAddress.Text = org.address;
}
}
}
XML确实可以使用textbox1.Items.Add(names [i] .InnerText);来显示名称。
任何帮助,将不胜感激!
我对您发布的代码进行了两项更改。 1)我向Organization添加了一个没有参数的构造函数,以简化xml linq。 2)我将ID从int更改为字符串,因为id在数字中有空格。
我怀疑您的xml具有名称空间,这可能是您的代码无法正常工作的原因,因此我使我的代码非常健壮,可以处理没有名称空间且具有名称空间的xml的情况。
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.Linq; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { string xml = "<Data>" + "<Organisation>" + "<Name>Accident Compensation Corporation</Name>" + "<ID> 022 12345678 </ID>" + "<Address> 220 Bunny Street</Address>" + "</Organisation>" + "<Organisation>" + "<Name>Test 2</Name>" + "<Address> 50 Lambton Quay</Address>" + "<ID> 021 8972468739 </ID>" + "</Organisation>" + "</Data>"; XElement data = XElement.Parse(xml); List<Organisation> organizations = new List<Organisation>(); organizations = data.Descendants().Where(x => x.Name.LocalName == "Organisation").Select(y => new Organisation() { name = (string)y.Element("Name"), address = (string)y.Element("Address"), id = (string)y.Element("ID") }).ToList(); } } public class Organisation { public string id; public string name; public string address; public Organisation() { } public Organisation(string id, string name, string address) { this.id = id; this.name = name; this.address = address; } } }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.