구문 분석이 필요한 많은 수의 XML 파일이 있고 트리 구조를 생성하고 데이터를 데이터베이스로 옮기기 위해 추가로 읽습니다. 다음은 필자의 요구 사항을 만족시키는 구조이다. TreeNode를 클래스는 태그 이름, 속성과 그 부모 태그 (여기에 태그 XML 요소입니다)XML 사용자 정의 요소가있는 Java 구문 분석
public class TreeNode {
String tagname;
Map<String, String> tagmap;
TreeNode parent;
List<TreeNode> children;
public TreeNode(String tagname, Map<String, String> tagmap) {
this.tagname = tagname;
this.tagmap = tagmap;
this.children = new LinkedList<TreeNode>();
}
public TreeNode addChild(String tagname,Map<String, String> tagmap) {
TreeNode childNode = new TreeNode(tagname,tagmap);
childNode.parent = this;
this.children.add(childNode);
return childNode;
}
지금은 어려운 XML 파일을 구문 분석 찾는하고있을 것이다. 샘플 XML 파일은 다음과 같습니다
<head>
<link href="files/style.css" rel="stylesheet"/>
</head>
<div class="toolbar" style="display:block;position:absolute;top:0;left:0;width:100%;height:100%">
<TABLE datatable="0" summary="">
<prj:if condition="Platform">
<tr>
<td nowrap><prj:toolbar name="First RunningTest"><prj:running property="HTML"/></prj:toolbar></td>
<td> </td>
</tr>
<tr>
<td nowrap><prj:toolbar name="Second RunningTest"><prj:running property="HTML"/></prj:toolbar>
<td> </td>
</tr>
<tr>
<td nowrap><prj:toolbar name="Third RunningTest"><prj:running property="HTML"/></prj:toolbar>
<td> </td>
</tr>
</prj:if>
</TABLE>
</div>
prj 태그는 프로젝트마다 고유합니다.
그래서 트리 구조는root
--head (its map will be empty)
--link (its map will all its properties i.e. key,value pair)
--div
--table
--prj_if
--tr
--td
--prj_toolbar
--prj_running
--td
--tr
--td
--prj_toolbar
--prj_running
--td
--tr
--td
--prj_toolbar
--prj_running
--td
XML은 (HTML 태그에서 떨어져 더 PRJ 태그의 수백이있을 수 있습니다) 모든 요소를 포함 할 수있을 것이다. 그래서 모든 태그, 그것의 프로 프/값 쌍 및 그 자식 노드 세부 정보를 저장해야합니다. 어떻게 XML을 읽고 Treemap으로 옮깁니 까? 또한 트리 맵을 트래버스하여 맵을 읽는 방법과 데이터를 매핑하는 하위 요소를 채우는 방법도 있습니다.
XML 구문 분석에 도움주세요
XML을 구문 분석하기 위해 어떤 인프라를 사용하고 있습니까? JAXB를 들여다 보았습니까? –
@ Ryan J, 저는 JAXB에서 일하지 않았습니다. 내가 읽었을 때 Unmarshalling의 모든 기본 예제에서 first class가 정의 된 다음 JAXB를 사용하여 xml 내용이 클래스로 파싱됩니다. 필자의 경우 모든 XML 파일에는 다른 요소가 있으므로 어떤 XML 파일에 어떤 태그가 올지 보장 할 수 없습니다. 또한 계층 트리 구조를 갖는 방법. 내 요구 사항을 기반으로 몇 가지 예를 보여 주거나 앞으로 가져갈 기본 구조를 세울 수 있습니까? 귀하의 도움에 미리 감사드립니다. – user2223335
여기에 꽤 광범위한 질문이 있으니 확실한 답을 내리기는 힘들지 만,보아야 할 것은 모든 하위 태그가 상속 받게 될'List'와 추상 기본 유형을 취소하는 것입니다 에서. XML은 특정 루트 태그 아래에서 태그가 다르게 허용되는 설명대로 구조를 허용하는 일부 스키마를 준수해야하므로 클래스를 적절히 구성 할 수 있습니다. 그렇지 않으면 각 조합에 대해 별도의 클래스 구조가 필요합니다. –