【问题标题】:How can I use GetElementsByTagName to get the innerText of the last element if there's more than one element with the same name?如果有多个同名元素,如何使用 GetElementsByTagName 获取最后一个元素的 innerText?
【发布时间】:2016-06-26 22:33:58
【问题描述】:

我有这个 XML

<WordDefinition>
  <Word>analyses</Word>
  <Definitions>
    <Definition>
      <Word>analyses</Word>
      <Dictionary>
        <Id>wn</Id>
        <Name>WordNet (r) 2.0</Name>
      </Dictionary>
      <WordDefinition>analyses
         See {analysis}
      </WordDefinition>
    </Definition>
    <Definition>
      <Word>analyses</Word>
      <Dictionary>
        <Id>wn</Id>
        <Name>WordNet (r) 2.0</Name>
      </Dictionary>
      <WordDefinition>analysis
     n 1: an investigation of the component parts of a whole and their
          relations in making up the whole
      </WordDefinition>
    </Definition>
  </Definitions>
</WordDefinition>

我编写了这个 C# 来获取“WordDefinition”的 innerText,如果只有一个“wordDefinition”,它就可以正常工作。但是,如果有 一个或多个,我想获取最后一个的 innerText。

 var doc = new XmlDocument();
 doc.LoadXml(responseFromServer);
 var el = doc.GetElementsByTagName("WordDefinition");

有人知道我该怎么做吗?对于这个例子,我想得到这个的 innerText:

  <WordDefinition>analysis
 n 1: an investigation of the component parts of a whole and their
      relations in making up the whole
  </WordDefinition>

【问题讨论】:

  • 看看this话题。您可能有兴趣。尝试我的答案中的方法,而不是手动获取响应。

标签: c# xml


【解决方案1】:

对不起 VB...使用 XElement 你可以像这样获得最后一个 WordDefinition

    Dim doc As XElement

    ' to load   doc = XElement.Load("path/URI here")
    ' for testing
    doc = <WordDefinition>
              <Word>analyses</Word>
              <Definitions>
                  <Definition>
                      <Word>analyses</Word>
                      <Dictionary>
                          <Id>wn</Id>
                          <Name>WordNet (r) 2.0</Name>
                      </Dictionary>
                      <WordDefinition>analyses
     See {analysis}
  </WordDefinition>
                  </Definition>
                  <Definition>
                      <Word>analyses</Word>
                      <Dictionary>
                          <Id>wn</Id>
                          <Name>WordNet (r) 2.0</Name>
                      </Dictionary>
                      <WordDefinition>analysis
 n 1: an investigation of the component parts of a whole and their
      relations in making up the whole
  </WordDefinition>
                  </Definition>
              </Definitions>
          </WordDefinition>

    'get the last WordDefinition
    Dim lastDef As XElement = doc...<WordDefinition>.LastOrDefault

如果没有测试数据,它将是:

    Dim doc As XElement = XElement.Load("path/URI here")

    'get the last WordDefinition
    Dim lastDef As XElement = doc...<WordDefinition>.LastOrDefault

你可以做一些其他的事情..

所有定义

    Dim allDefs As IEnumerable(Of XElement) = doc...<WordDefinition>

粗过滤器

    Dim whDef As String = "analys"
    Dim multiDef As IEnumerable(Of XElement) = From wd In doc...<WordDefinition>
                                                  Where wd.Value.Trim.StartsWith(whDef)
                                                  Select wd

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 2012-04-02
    • 2020-08-04
    相关资源
    最近更新 更多