如何访问特定 XMLnode 的 innerText
Posted
技术标签:
【中文标题】如何访问特定 XMLnode 的 innerText【英文标题】:How do I access innerText of a specific XMLnode 【发布时间】:2010-12-14 02:25:39 【问题描述】:嗨 我有以下 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 分!让我知道,我会更好地解释自己。 谢谢!!
【问题讨论】:
为什么不使用 linq? linq 是为这样的事情而设计的...... @Pauli:如果他使用的是 .NET 2.0,则 LINQ 不可用。 是的,但是让我们将问题重新标记为 2.0 然后 :) 【参考方案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;
【讨论】:
【参考方案2】:试试 XPath.. 这样的东西应该可以工作:
string firstName = String.Empty;
var xmlNode = doc.SelectSingleNode(String.Format("//Customer[@AccountNumber='0']/CustomerInfo/firstName", _AccNumber));
if (xmlNode != null)
firstName = xmlNode.InnerText;
【讨论】:
以上是关于如何访问特定 XMLnode 的 innerText的主要内容,如果未能解决你的问题,请参考以下文章
WinRT 与 xsd.exe 生成的序列化/无权访问 System.Xml.XmlNode