1

您好我有以下 XML 片段:

  <Customer AccountNumber="4">
    <CustomerInfo>
      <firstName>Andrew</firstName>
      <lastName>Walker</lastName>
    </CustomerInfo>
    <Transactions>
      <AccountBalance>595848584.4</AccountBalance>
    </Transactions>
  </Customer>

来自更大的 XML 文件。我想访问<firsName>C# 中的。目前我正在做以下事情:

    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您所期望的 a。所以在调试器中名字有以下路径:

searchNode -> [0].[0].[0].value

如果这有意义吗?

有没有更好的方法来做到这一点?(没有 LINQ)?抱歉,如果有不清楚的地方......现在是凌晨 2 点 30 分!让我知道,我会更好地解释自己。谢谢!!

4

2 回答 2

1

试试 XPath .. 这样的东西应该可以工作:

string firstName = String.Empty;

var xmlNode = doc.SelectSingleNode(String.Format("//Customer[@AccountNumber='{0}']/CustomerInfo/firstName", _AccNumber));
if (xmlNode != null)
    firstName = xmlNode.InnerText;
于 2010-12-14T02:48:34.097 回答
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;
        }
于 2010-12-14T04:22:48.563 回答