2017-01-22 13 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

....意味のある、適切な-同棲変数名を使用して、リストから最初の(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"); 

と(あなたが崇拝誰でも)の愛のために取ることができますXMLファイル(またはサンプル)を投稿しますか? –

+0

@James_D私はそれを追加することを忘れて申し訳ありません、私はHtml snipit XDとして追加する必要があったので、私はファイルをアップロードする方法を見つけることができませんでした –

+0

それを貼り、[コードとしてフォーマット](http:// meta。 stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) –

答えて

0

ロジックが間違っています。まず、ドキュメント全体からすべての<internal-media>要素を1つのリストに集めます。次に、別の異なるサイズのリストで使用される同じインデックス変数を使用して、そのリストを反復処理します。

現在の<u>要素の子孫要素のたびに "internal-media"リストを作成する必要があります。その後、ちょうど

関連する問題