2017-01-22 2 views
0

나는 비디오 플레이어, 성적표가있는 소프트웨어를 작성하고 동기화하여 실행하려고합니다.은 XML 파일에서 시간 데이터를 추출 할 수 없습니다.

현재 성적에 문제가 있습니다. 내가 사용하고있는 XML 파일을 첨부 : 각 u 섹션에 여러 내부 미디어 태그가 있기 때문에 나는 성적 증명서를 표시하고 때

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); 
    } 

문제는, 그들은 잘못된 시간에 인쇄되어 있습니다. 각 단락마다 처음 단 하나만 필요로 할 때 모든 것을 가져 가고 있습니다. 아래의 예를 참조하십시오.

<?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> 
+0

을 수 .... 의미있는 적절한-맡았다 변수 이름을 사용 목록

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 인덱스) 항목을 XML 파일 (또는 샘플)을 게시 하시겠습니까? –

+0

@James_D 죄송합니다. 죄송합니다. 파일을 업로드하는 방법을 찾을 수 없어서 HTML 스 니핏 XD로 추가해야했습니다. –

+0

[code as format] (http : // meta. stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) –

답변

0

논리가 잘못되었습니다. 먼저 전체 문서에서 모든 <internal-media> 요소를 하나의 목록으로 모으십시오. 둘째, 다른 목록에서 사용되는 동일한 인덱스 변수를 사용하여 해당 목록을 반복합니다.

현재 <u> 요소의 하위 요소에 대해 매번 "내부 미디어"목록을 작성해야합니다. 그 후, 단지

관련 문제