2014-01-10 2 views
-2

서버 로그 (XML 파일)를 구문 분석하고 전체 XML 파일에서 특정 문자열을 찾은 다음 특정 노드 정보 만 데이터베이스에 저장하는 작업이 할당되었습니다. XML 파일 자바 코드에 걸쳐java를 사용하여 XML 서버 로그를 구문 분석하여 데이터베이스에 전송

는 "시작 데몬 DaemonMsg_TriggerForceDequeue"문자열을 찾고됩니다 아래

는 시나리오입니다. 이 문자열이 발견되는 곳에서는 전체 노드가 Java 코드에 의해 선택되고 전체 노드 정보가 행/열 형식의 Oracle 데이터베이스로 전송됩니다.

저는 초보자입니다. 아무에게도 어떻게 제안 할 수 있습니까?

+0

XML 예제를 추가하십시오. –

+0

이 질문은 기본적으로 더 구체적인 XML 구문 분석 질문입니다. 이 튜토리얼을 다루는 좋은 튜토리얼과 스택 오버 플로우 문제가 많이있다. 다음은 간단한 튜토리얼입니다. 또는 관련 주제에 대한 오른쪽 여백을 확인하십시오. http://www.mkyong.com/java/how-to-read-xml-file-in-java-dom-parser/ – Submersed

답변

1

XML 문서에서 검색하는 가장 쉬운 방법은 XPath입니다. 당신이 겁니다 자바의 XPath API와 함께이 결합

//*[contains(text(), 'Start Daemon DaemonMsg_TriggerForceDequeue') 

: 더 구체적으로 어렵다 XML 문서를 제외한 모든 노드를 검색하고 그 지정된 값을 포함 리턴이 XPath는 문을보고 밖으로

XPath xPath = XPathFactory.newInstance().newXPath(); 
NodeList nodeList = (NodeList)xPath.compile("//*[contains(text(), 'Start Daemon DaemonMsg_TriggerForceDequeue')").evaluate(document, XPathConstants.NODESET); 

for (int i = 0; i < nodeList.getLength(); i++) 
{ 
    System.out.println(nodeList.item(i).getTextContent()); 
} 

질문의 데이터베이스 부분에 대한 세부 정보는 충분하지 않으므로 매우 일반적인 조언 만 제공 할 수 있습니다.

표준 XML을 데이터베이스에 저장하는 방법은 CLOB를 사용하는 것입니다. 표준 JDBC는 설명 된대로 here을 지원합니다.

오라클을 사용하면서 사용자 정의 XML Type을 고려할 수도 있습니다. 이것은 비표준이며 here을 설명하는 JDBC의 확장으로 지원됩니다.

관련 문제