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

nem*_*_87 4 c# xml

我正在尝试查找带有标记名称 Reason 的子元素。我有 XML 文档,它基本上包含一堆带有实体名称的元素。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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是 Reason 元素的位置。

<Entity>
  <WatchList>
     <Match ID="1">
        <MatchDetails>
          <Reason>
Run Code Online (Sandbox Code Playgroud)

有没有人有这方面的经验?

Nas*_*ine 6

以下是获取所有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);
}
Run Code Online (Sandbox Code Playgroud)

如果您给我们一个更完整的 XML 示例,我可以改进答案。

编辑:

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

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

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