xml 스키마 계층 구조에서 주어진 수준의 요소 이름을 어떻게 나열합니까? 아래에있는 코드는 중첩 개념이없는 계층 구조의 모든 수준에서 모든 요소 이름을 나열합니다.xml 입력 파일의 계층 탐색
public static void parseFile() {
//get the factory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
try {
//Using factory get an instance of document builder
DocumentBuilder db = dbf.newDocumentBuilder();
//parse using builder to get DOM representation of the XML file
Document dom = db.parse("D:\\mypath\\somefile.xml");
//get the root element
Element docEle = dom.getDocumentElement();
//get a nodelist of elements
NodeList nl = docEle.getElementsByTagName("*");
if (nl != null && nl.getLength() > 0) {
for (int i = 0; i < nl.getLength(); i++) {
Node node = nl.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
System.out.println("node.getNodeName() is: "+node.getNodeName());
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
위 프로그램의 출력은 다음과 같습니다 :
title
languageCode
versionNumber
recordTarget
someRole
id
addr
streetAddressLine
city
state
postalCode
country
telecom
다음
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><?xml-stylesheet type="text/xsl" href="CDA.xsl"?>
<SomeDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:something">
<title>some title</title>
<languageCode code="en-US"/>
<versionNumber value="1"/>
<recordTarget>
<someRole>
<id extension="998991"/>
<addr use="HP">
<streetAddressLine>1357 Amber Drive</streetAddressLine>
<city>Beaverton</city>
<state>OR</state>
<postalCode>97867</postalCode>
<country>US</country>
</addr>
<telecom value="tel:(816)276-6909" use="HP"/>
</someRole>
</recordTarget>
</SomeDocument>
XML 파일을 가져 와서 반복 내 자바 방법 : 여기
내 XML 파일입니다
대신 다음을 출력하고 싶습니다.
title
languageCode
versionNumber
recordTarget
그런 다음 id
, addr
및 telecom
로 someRole
의 아이들을 나열하려면 다음 someRole
로 recordTarget
의 자녀를 나열 할 수 및 수 좋을 것입니다. 그리고 계속해서,하지만 코드의 재량에 따라. 원하는 출력을 얻기 위해 코드를 어떻게 변경합니까?
당신이 JAXB 사용을 고려 했습니까? 낮은 수준의 API를 사용하는 DOM 트리는 사용하기가 쉽지 않습니다. – laune
@laune 제안 해 주셔서 감사합니다. 내 응용 프로그램의 엔터티 모델이 xml 스키마에 직접 매핑되지 않습니다. JAXB는 xml에서 객체 이름과 속성으로의 확실한 매핑을 요구합니까? – CodeMed