获取 XmlNode 的特定属性
Posted
技术标签:
【中文标题】获取 XmlNode 的特定属性【英文标题】:Get specific attribute of XmlNode 【发布时间】:2016-07-10 09:50:32 【问题描述】:我有一个 XmlNode,它的 OuterXml 是我发布的下一个代码。我需要知道如何获取每个广告系列的名称和年龄。
XmlNode Response = client.GetNamesAndAges(xmlRequest);
<Example>
<FromDate>12-05-2016</FromDate>
<ToDate>25-05-2016</ToDate>
<Campaigns>
<Campaign>
<Name>A</Name>
<age>2</age>
</Campaign>
<Campaign>
<Name>B</Name>
<age>1</age>
</Campaign>
</Campaigns>
<Status></Status>
</Example>
【问题讨论】:
【参考方案1】:您可以通过SelectNodes()
使用XPath 来获取特定的节点/元素,即在这种情况下为Campaign
元素,然后从每个Campaign
打印Name
和age
值:
var campaignList = Response.SelectNodes("Campaigns/Campaign");
foreach(XmlNode campaign in campaignList)
Console.WriteLine(campaign["Name"].InnerText);
Console.WriteLine(campaign["age"].InnerText);
顺便说一句,Name
和 age
是 元素。 XML 中的 Attributes 用于引用其他内容,即 bar
是属性的名称,其值为以下 XML 元素 <foo bar="baz"/>
中的 baz
。
【讨论】:
请注意,如果特定元素中没有“姓名”或“年龄”,则会引发异常。如有必要,您可能需要将campaign["Name"].InnerText
和 campaign["age"].InnerText
包装在一个尝试安全提取信息的方法中。【参考方案2】:
使用xml linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
class Program
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
XDocument doc = XDocument.Load(FILENAME);
var campaign = doc.Descendants("Campaign").Select(x => new
name = (string)x.Element("Name"),
age = (int)x.Element("age")
).ToList();
【讨论】:
以上是关于获取 XmlNode 的特定属性的主要内容,如果未能解决你的问题,请参考以下文章