2013-06-05 2 views
0

자연어 도구의 XML 문자열 출력 세트가 있으며 그 중 값을 검색해야하며 출력 문자열에 표시되지 않은 태그에도 null 값을 제공해야합니다. Extracting data from XML using Java에서 제공된 Java 코드를 사용해 보았지만 작동하지 않는 것 같습니다.Java에서 XML 태그의 값 검색

현재 샘플 태그 목록은 아래와 같습니다 :

<TimeStamp>, <Role>, <SpeakerId>, <Person>, <Location>, <Organization> 

샘플 XML 출력 문자열 :

<TimeStamp>00.00.00</TimeStamp> <Role>Speaker1</Role><SpeakerId>1234</SpeakerId>Blah, blah, blah. 

욕망 출력 :에서 제공하는 자바 코드를 사용하기 위해

TimeStamp: 00.00.00 
Role: Speaker1 
SpeakerId: 1234 
Person: null 
Place: null 
Organization: null 

위 링크 (업데이트 된 코드)에 <Dummy> 및을 삽입했습니다. 210을 다음과 같이 설정합니다.

<Dummy><TimeStamp>00.00.00</TimeStamp><Role>Speaker1</Role><SpeakerId>1234</SpeakerId>Blah, blah, blah.</Dummy> 

그러나 더미 및 null 만 반환합니다. 필자는 여전히 Java에 대한 초보자이므로 자세한 설명은 매우 감사하겠습니다.

+0

사용 된 코드를 표시하십시오. 그리고 실제 xml은 입력으로 사용됩니다. – acdcjunior

답변

0

이것이 Java 래퍼 (쇼 타임 스탬프 전용)에 대한 작업을 마친 것입니다.

public class NERPost { 

     public String convertXML (String input) { 
     String nerOutput = input; 
     try { 
      DocumentBuilderFactory docBuilderFactory = 
      DocumentBuilderFactory.newInstance(); 
      DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder(); 
      InputSource is = new InputSource();    
      is.setCharacterStream(new StringReader(nerOutput));  
      Document doc = docBuilder.parse(is); 

     // normalize text representation 
     doc.getDocumentElement().normalize(); 
     NodeList listOfDummies = doc.getElementsByTagName("dummy"); 


     for(int s=0; s<listOfDummies.getLength() ; s++){ 
      Node firstDummyNode = listOfDummies.item(s); 
      if(firstDummyNode.getNodeType() == Node.ELEMENT_NODE){ 
       Element firstDummyElement = (Element)firstDummyNode; 

     //Convert each entity label -------------------------------- 

      //TimeStamp 
       String ts = "<TimeStamp>"; 
       Boolean foundTs; 

       if (foundTs = nerOutput.contains(ts)) {      
      NodeList timeStampList = firstDummyElement.getElementsByTagName("TimeStamp"); 

      //do it recursively 
       for (int i=0; i<timeStampList.getLength(); i++) {  
       Node firstTimeStampNode = timeStampList.item(i); 
       Element timeStampElement = (Element)firstTimeStampNode; 
       NodeList textTSList = timeStampElement.getChildNodes(); 
       String timeStampOutput = ((Node)textTSList.item(0)).getNodeValue().trim(); 
       System.out.println ("<TimeStamp>" + timeStampOutput + "</TimeStamp>\n") 
        } //end for 
       }//end if 
      //other XML tags 
       //..... 
       }//end if 
       }//end for 
      } 
      catch... 
       }//end try 
       }} 
0

이 방법을 시도해보십시오

Node nNode = nList.item(temp); 

Example Site :

NodeList nList = doc.getElementsByTagName("staff"); 

이 같은 항목을 가져 오기 : D 희망은 당신이

File fXmlFile = new File("yourfile.xml"); 
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
Document doc = dBuilder.parse(fXmlFile); 

당신은이 같은 자식 노드 목록을 얻을 수 있습니다 도움이 될 수 있습니다

+0

이것이 내가 한 일입니다. –

+0

다행히 도울 수 있습니다. D –