繁体   English   中英

C#XML到dropdownBox

[英]C# XML to dropdownBox

从URL返回的XML:

<root>
<APIVersion>0.1</APIVersion>
<resource>persons</resource>
<search>givenname</search>
<query>andreas</query>
<limit>400</limit>
<results>
<item>
<persons>
<personId>21168</personId>
<givenName>Andreas</givenName>
<familyName>Garpe</familyName>
<email>andreas.garpe@t-fk.no</email>
<mobilePhone/>
<workPhone/>
<positions>...</positions>
</persons>
</item>
<item>...</item>
<item>...</item>
<item>...</item>
</results>
</root>

(请记住,“项目”是带有人员信息的对象。)

我有一个定义为bunifuTextbox1的文本框。

我输入了一个名称,它从返回的XML结果中返回了名称,并将所有返回的名称放入一个下拉框中。

private void button1_Click(object sender, EventArgs e)
{
    string address = "http://ws.t-fk.no/?resource=persons&search=givenname&string=" + bunifuTextbox1.text;

    XmlDocument doc1 = new XmlDocument();
    doc1.Load(address);
    XmlElement root = doc1.DocumentElement;
    XmlNodeList nodes = root.SelectNodes("/results/item");

    foreach (XmlNode node in nodes)
    {
        string tempf = node["persons"]["givenName"].InnerText;
        bunifuDropdown1.AddItem(tempf);
    }
}

我不确定为什么这行不通。 有什么帮助吗?

您的XPath不正确。 代替

 XmlNodeList nodes = root.SelectNodes("/results/item");

尝试

XmlNodeList nodes = root.SelectNodes("results/item");

要么

XmlNodeList nodes = root.SelectNodes("./results/item");

要么

XmlNodeList nodes = root.SelectNodes("//results/item");

对于作为"./results/item"的子元素的results元素的子元素的item元素,请使用"results/item""./results/item"

使用"//results/item"将选择item是儿童的元素results元素,其中的results元素在XML的任何地方。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM