您好 我有以下XML片段:
<Customer AccountNumber="4">
<CustomerInfo>
<firstName>Andrew</firstName>
<lastName>Walker</lastName>
</CustomerInfo>
<Transactions>
<AccountBalance>595848584.4</AccountBalance>
</Transactions>
</Customer>
来自更大的XML文件。我想访问C#中的<firsName>
。
目前我正在做以下事情:
foreach (XmlNode customer in root)
{
i++;
if(_AccNumber== Convert.ToInt32(customer.Attributes[0].Value))
{
searchNode = CustNodes[(i - 1)];
string _firstName = searchNode.FirstChild.FirstChild.InnerText;
}
}
当我在调试器中查看searchNode
时,我可以在结果视图元素[0]中看到它具有您期望的localName
CustomerInfo
。因此在调试器中,名字具有以下路径:
searchNode -> [0].[0].[0].value
如果这有意义吗?
有没有更好的方法呢? (没有LINQ)? 道歉,如果事情不清楚......凌晨2:30!让我知道,我会更好地解释自己。 谢谢!
答案 0 :(得分:1)
尝试XPath ..这样的事情应该有效:
string firstName = String.Empty;
var xmlNode = doc.SelectSingleNode(String.Format("//Customer[@AccountNumber='{0}']/CustomerInfo/firstName", _AccNumber));
if (xmlNode != null)
firstName = xmlNode.InnerText;
答案 1 :(得分:1)
我认为xpath理解起来要复杂得多,所以最好使用GetElementsByTagName函数
XmlDocument doc = new XmlDocument();
doc.Load(@"sample.xml");
XmlNodeList firstNameNodes = doc.GetElementsByTagName("firstName");
foreach (XmlNode node in firstNameNodes)
{
string firstName = node.InnerText;
}