首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从XML文件中提取时间数据

无法从XML文件中提取时间数据
EN

Stack Overflow用户
提问于 2017-01-23 03:01:05
回答 1查看 51关注 0票数 0

我正在尝试写一个软件,这将有一个视频播放器,转录和同步运行它们。

我现在对成绩单有点问题。我已经附加了我正在使用的XML文件:

代码语言:javascript
复制
NodeList nodeParagraphs = root.getElementsByTagName("u");
NodeList nodeParagraphs2 = root.getElementsByTagName("internal-media");
  for(int i=0; i < nodeParagraphs.getLength(); i++){
    Element nodeParagraph = (Element)nodeParagraphs.item(i); 
    Element nodeParagraph2 = (Element)nodeParagraphs2.item(i);
    String id = nodeParagraph.getAttribute("uID");
    String who = nodeParagraph.getAttribute("who");
    String Time = nodeParagraph2.getAttribute("start");
    Paragraph p = new Paragraph(who, id, Time);

    NodeList wNodeList = nodeParagraph.getElementsByTagName("w");
    for(int j=0; j < wNodeList.getLength(); j++){
      Element wElem = (Element)wNodeList.item(j);
      String word = wElem.getTextContent();
      p.addWord(word);
    }
    chat.addParagraph(p);
  }

问题是,当我显示文本时,它们在错误的时间打印,因为在每个u部分中有多个内部媒体标记。当我只需要每个段落的第一个时,它就是取所有的。示例如下:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>

<CHAT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://www.talkbank.org/ns/talkbank"
      xsi:schemaLocation="http://www.talkbank.org/ns/talkbank http://talkbank.org/software/talkbank.xsd"
      Media="future" Mediatypes="video"
      PID="11312/t-00017262-1"
      Font="CAfont:13:0"
      Version="2.2.1"
      Lang="eng"
      Options="CA"
      Corpus="DaCapo"
      Date="1984-01-01">
  <Participants>
    <participant
      id="DAC"
    name="Dacapo_Leader"
      role="Adult"
      language="eng"

    />
    <participant
      id="MIC"
    name="Michael"
      role="Adult"
      language="eng"

    />
    <participant
      id="LUI"
    name="Luis"
      role="Adult"
      language="eng"

    />
    <participant
      id="NIN"
    name="Nina"
      role="Adult"
      language="eng"

    />
    <participant
      id="KEN"
      role="Adult"
      language="eng"

    />
    <participant
      id="JAK"
    name="Jakob"
      role="Adult"
      language="eng"

    />
    <participant
      id="XXX"
      role="Unidentified"
      language="eng"

    />
    <participant
      id="WOM"
    name="Dacapo_Woman"
      role="Adult"
      language="eng"

    />
  </Participants>
  <u who="KEN" uID="u0">
    <w>as</w>
    <w>it</w>
    <w>currently</w>
    <w>stands</w>
    <w>one</w>
    <w>of</w>
    <w>the</w>
    <w>things</w>
    <w>that</w>
    <w>people</w>
    <w>do</w>
    <internal-media
      start="0.000"
      end="2.520"
      unit="s"
    />
    <w>is</w>
    <w>create</w>
    <internal-media
      start="2.520"
      end="3.240"
      unit="s"
    />
    <w>one</w>
    <w>of</w>
    <w>the</w>
    <w>things</w>
    <w>that</w>
    <w>anthropologists</w>
    <w>design</w>
    <w>researchers</w>
    <w>do</w>
    <internal-media
      start="3.240"
      end="6.720"
      unit="s"
    />
    <w>is</w>
    <w>they</w>
    <w>create</w>
    <w>distance</w>
    <w>between</w>
    <w>business</w>
    <w>people</w>
    <internal-media
      start="6.720"
      end="9.160"
      unit="s"
    />
    <w>and</w>
    <w>uh</w>
    <t type="missing CA terminator"></t>
    <media
      start="9.160"
      end="11.200"
      unit="s"
    />
  </u>
  <u who="DAC" uID="u1">
    <w>participants</w>
    <t type="missing CA terminator"></t>
    <media
      start="11.200"
      end="11.800"
      unit="s"
    />
  </u>
EN

回答 1

Stack Overflow用户

发布于 2017-01-23 18:22:40

你的逻辑错了。首先,将整个文档中的所有<internal-media>元素收集到一个列表中。其次,使用在另一个不同大小的列表上使用的相同索引变量迭代该列表。

您每次都需要为当前<u>元素的子元素构建“内部媒体”列表。在此之后,只需从列表中获取第一个(0索引)项

代码语言:javascript
复制
NodeList nodeParagraphs = root.getElementsByTagName("u");
  for(int i=0; i < nodeParagraphs.getLength(); i++){
    Element nodeParagraph = (Element)nodeParagraphs.item(i); 
    NodeList internalMediaList = nodeParagraph.getElementsByTagName("internal-media");
    Element firstInternalMedia = (Element)internalMediaList.item(0);
    String time = firstInternalMedia.getAttribute("start");

为了(无论你崇拜的人)的爱,使用有意义的、大小写正确的变量名……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41794967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档