【问题标题】:Finding attribute from .getNamedItem returns null after parsed xml从 .getNamedItem 中查找属性在解析 xml 后返回 null
【发布时间】:2021-04-07 19:47:59
【问题描述】:

我目前是第一次使用 API,在检索数据时遇到了一些问题。

xml 文件如下所示:

<schedule>
...
<scheduledepisode>
  <episodeid>22441</episodeid>
  <title>Ekonyheter </title>
  <starttimeutc>2012-09-19T04:00:00Z</starttimeutc>
  <endtimeutc>2012-09-19T04:03:00Z</endtimeutc>
  <program id="83" name="Ekot" />
  <channel id="164" name="P3" />
</scheduledepisode>
<scheduledepisode>

所以我使用NodeList nodelist1 = doc.getElementsByTagName("scheduledepisode"); 来获取所有scheduledepisode 元素,然后我认为要恢复标题下的数据,我可以简单地使用以下内容:

System.out.println(node.getAttributes().getNamedItem("title").getTextContent());

但是,这只返回 null 并且我不明白为什么,有人可以解释我在这里缺少什么。据我了解,title 元素是scheduledepisode 元素的属性。有错吗?

节点列表的长度与scheduledepisodes 的数量相反,所以我假设我得到了正确的元素。

代码如下:

NodeList nodelist1 = doc.getElementsByTagName("scheduledepisode");
for (int i = 0; i < nodelist1.getLength(); i++)
{
      Node node = nodelist1.item(i);
      if (node.getNodeType() == Node.ELEMENT_NODE )
      {
           if (node.getAttributes().getNamedItem("title") != null) {
                 System.out.println(node.getAttributes().getNamedItem("title").getTextContent());
           }
      }
}

【问题讨论】:

    标签: java xml dom


    【解决方案1】:

    由于&lt;title&gt;&lt;scheduledepisode&gt; 的元素而不是属性,getAttributes() 将不起作用。因此,再次使用getElementsByTagName

    NodeList se_nodelist = doc.getElementsByTagName("scheduledepisode");
    for (int i = 0; i < nodelist1.getLength(); i++)
    {
          Node node = nodelist1.item(i);
          if (node.getNodeType() == Node.ELEMENT_NODE )
          {
               if (node.getElementsByTagName("title") != null) {
                     System.out.println(node.getElementsByTagName("title").item(0).getTextContent());
               }
          }
    }
    

    【讨论】:

    • 谢谢,我需要创建一个新的节点列表 NodeList titles = doc.getElementsBytagName("title"); 并从那里挑选一个项目并获取它的标题等。
    猜你喜欢
    • 1970-01-01
    • 2013-08-15
    • 2021-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多