C# 如何在C中从另一个XML值中获取XML值

C# 如何在C中从另一个XML值中获取XML值,c#,xml,C#,Xml,我需要从XML文件中获取一个值 我有一个XML文件,例如: 伊瓦尔 BFEB-FBFF-0000-06FD-C87C-FA30 杰雷米 BFE9-FBFF-0000-06E8-E41E-5034 现在,如果我的值是BFEB-FBFF-0000-06FD-C87C-FA30,那么如何通过C从xml文件中获取名称Ivar?我认为这应该可以: XElement root = XElement.Load("file.xml"); IEnumerable<XElement> hws =

我需要从XML文件中获取一个值

我有一个XML文件,例如:

伊瓦尔 BFEB-FBFF-0000-06FD-C87C-FA30 杰雷米 BFE9-FBFF-0000-06E8-E41E-5034
现在,如果我的值是BFEB-FBFF-0000-06FD-C87C-FA30,那么如何通过C从xml文件中获取名称Ivar?

我认为这应该可以:

XElement root = XElement.Load("file.xml");
IEnumerable<XElement> hws =
    from el in root.Elements("user")
    where (string)el.Element("userName") == "Ivar"
    select el.Descendant("hwid);

尚未测试。

我在应用程序中使用了如下内容:

using System.Data;

DataSet dataSet = new DataSet();
dataSet.ReadXml(xmlFullPath, XmlReadMode.Auto);
DataRow[] dataRows = dataSet.Tables["user"].Select("hwid like 'BFEB-FBFF-0000-06FD-C87C-FA30'");
if (dataRows.Length == 0)
    return;
string sUser = dataRows[0]["userName"].ToString();

您还可以使用System.Xml命名空间的XmlDocument来实现这一点,该命名空间在.NET3.0中受支持

var xml = "<?xml version=\"1.0\"?>" +
      "<hwids> " + "<user>" +
      "<userName>Ivar</userName>" +
      "<hwid>BFEB-FBFF-0000-06FD-C87C-FA30</hwid>"+
      "</user> " +
      "<user>" +
      "<userName>Jerremy</userName>" +
      "<hwid>BFE9-FBFF-0000-06E8-E41E-5034</hwid>" +
      "</user>" +
      "</hwids>";

      XmlDocument doc = new XmlDocument();
      doc.LoadXml(xml);
      var ret = doc.GetElementsByTagName("userName");

      for (int i = 0; i < ret.Count; i++)
      {
           Debug.WriteLine(ret.Item(i).InnerText);
      }

我使用的是C3.0,所以我不能使用linq。是的,你也可以看到:原谅我是个新手,但我不能得到XElement。我都找不到System.Xml.Linq引用:我是说我用的是.NET3.0,不是C3.0。老实说,我觉得是一样的:$@Ivar没问题。我知道你最终会得到答案的。还有一个类是.NET2.0的一部分,但使用起来更为冗长。+1认为最终有人可以来使用XmlDocument,但这很好!