使用C#选择具有特定名称的XML子节点

时间:2016-05-26 09:33:44

标签: c# xml

我正在尝试查找标签名为Reason的子元素。 我有XML doc,它基本上包含一堆带有实体名称的元素。 Reason标记位于Entity内部(以及其他元素)。

void IParseResponse.ParseResponseData(XmlDocument responseDocument)
{
    List<string> reasons = new List<string>();
    var reasonValue = "";
    var entityList = responseDocument.GetElementsByTagName("Entity");

    if (entityList != null)
    {
        foreach (XmlNode reason in entityList)
        {   
            reasonValue = //look into current Entity element, find Reason in it and get it's inner text.
            reasons.Add(reasonValue);
        }
    }
}

这是Reason元素的位置。

<Entity>
  <WatchList>
     <Match ID="1">
        <MatchDetails>
          <Reason>

有人有这方面的经验吗?

1 个答案:

答案 0 :(得分:3)

以下是获取所有Reason元素的方法。

var xml = "<Entity> <WatchList><Match ID=\"1\"><MatchDetails><Reason>asdasd</Reason></MatchDetails></Match></WatchList></Entity>";

var x = XDocument.Parse(xml);
var reasons = x.Descendants("Reason").ToList();
foreach (var reason in reasons)
{
    Console.WriteLine(reason.Value);
}

如果您向我们提供更完整的XML示例,我可以改进答案。

修改

如果你想使用XmlDocument,你可以这样做:

XmlNodeList nodes = responseDocument.GetElementsByTagName("Reason");

for (int i = 0; i < nodes.Count; i++)
{
    Console.WriteLine(nodes[i].InnerText);
}