다음과 다소 비슷한 xml이 있습니다. 속성과 태그에서 값을 가져 와서 저장해야합니다. 하지만 레벨 2 (3,4 등) 중첩 된 요소를 얻는 방법을 이해할 수 없습니다. 나는 인터넷에서 찾은 다음 코드를 사용한다. DOM을 사용하지만 올바른 RegNumber와 그 속성을 얻을 수 없다. 미리 감사드립니다. Java : 중첩 된 요소가 많은 xml 읽기
nodeList = xmldocument.getElementsByTagName("Header"); if (nodeList != null && nodeList.getLength() > 0) { for (int i = 0; i < nodeList.getLength(); i++) { //get the header element Element header = (Element) nodeList.item(i); System.out.println("Element: " + ((Element)nodeList.item(i)).getNodeName()); System.out.println(header.getAttribute("time")); } } nodeList = xmldocument.getElementsByTagName("Document"); if (nodeList != null && nodeList.getLength() > 0) { for (int i = 0; i < nodeList.getLength(); i++) { //get the document element Element document = (Element) nodeList.item(i); System.out.println("Element: " + ((Element)nodeList.item(i)).getNodeName()); System.out.println(document.getAttribute("Id")); nodeList = document.getElementsByTagName("RegNumber"); for (int j = 0; j < nodeList.getLength(); j++) { //get the RegNumber element Element regNumber = (Element) nodeList.item(j); System.out.println("Element: " + ((Element)nodeList.item(j)).getNodeName()); System.out.println(regNumber.getAttribute("regpoint")); } } }
XML :
<XML xsi:schemaLocation="http://www.codetools.it XSD2.xsd" xmlns="http://www.codetools.it" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Header time="2001-12-17T09:30:47Z" />
<Document Id="456">
<RegNumber regpoint="" regdate="2001-12-17T09:30:47Z">123/456</RegNumber>
<Confident flag="0"/>
<DocNumber kind="">
<RegNumber RegPoint="" regdate="2001-12-17T09:30:47Z">456/789</RegNumber>
<Organization fullname="lol" shortname="" ownership="lol" ogrn="78945612" inn="">
<OfficialPerson>
<Name Firstname="John"/>
<Official Department="" post=""/>
<SignDate>2001-12-17T09:30:47Z</SignDate>
</OfficialPerson>
<Econtact type="1">[email protected]</Econtact>
<Address street="" settlement="" postcode="" postbox="" flat="" district="" region="" country="" nontypical="" house=""/>
</Organization>
</DocNumber>
<DocTransfer os="Windows" type=".docx" type_ver="" char_set="" description="kkkk">
</DocTransfer>
<Reghistory idnumber="">
<RegNumber RegPoint="" regdate=""/>
<Organization fullname="" shortname="" ownership="" ogrn="" inn="">
<Econtact type=""/>
<Address street="" settlement="" postcode="" postbox="" flat="" district="" region="" country="" nontypical="" house=""/>
</Organization>
</Reghistory>
<Author>
<Organization fullname="" shortname="" ownership="" ogrn="12345678" inn="">
<OfficialPerson>
<Name Firstname="" />
<Official Department="" post=""/>
<SignDate>2011-12-17T09:30:47Z</SignDate>
</OfficialPerson>
<Econtact type="Рї">[email protected]</Econtact>
<Address street="" postcode="1234" postbox="" flat="" district="" region="" country="" nontypical="" house="12"/>
</Organization>
<PrivatePerson>
<Name Surname="" Firstname="" Fathername=""/>
<Econtact type=""/>
<Address street="" settlement="" postcode="" postbox="" flat="" district="" region="" country="" nontypical="" house=""/>
<SignDate/>
<Rank privilege="" socialposition="" sex=""/>
</PrivatePerson>
</Author>
<Validator attestation="0">
<DocNumber kind="наказ">
<RegNumber RegPoint="" regdate="2001-12-17T09:30:47Z"/>
<Organization fullname="" shortname="" ownership="" ogrn="14725836" inn="">
<Econtact type="Рї">[email protected]</Econtact>
<Address street="" settlement="" postcode="" postbox="" flat="" district="" region="" country="" nontypical="" house=""/>
</Organization>
</DocNumber>
<Organization fullname="" shortname="РљРњРЈ" ownership="" ogrn="96325878" inn="">
<Econtact type="String">[email protected]</Econtact>
<Address street="Пушкіна" settlement="" postcode="4563" postbox="" flat="" district="" region="" country="" nontypical="" house="23"/>
<OfficialPerson>
<Name Surname="" Firstname="" Fathername=""/>
<Official Department="" post=""/>
<SignDate>2011-12-17T09:30:47Z</SignDate>
</OfficialPerson>
</Organization>
<PrivatePerson>
<Name Surname="" Firstname="" Fathername=""/>
<Econtact type=""></Econtact>
<Address street="" settlement="" postcode="" postbox="" flat="" district="" region="" country="" nontypical="" house=""/>
<SignDate></SignDate>
<Rank privilege="" socialposition="" sex=""/>
</PrivatePerson>
</Validator>
<Addressee>
<Referred id="" retype="">
<RegNumber regdate="" regpoint=""/>
<TaskNumber taskDate=""/>
</Referred>
<Organization fullname="String" shortname="" ownership="" ogrn="85236974" inn="">
<OfficialPerson>
<Name Surname="" Firstname="" Fathername=""/>
<Official Department="" post=""/>
</OfficialPerson>
<Econtact type="Рї">[email protected]</Econtact>
<Address street="" settlement="" postcode="" postbox="" flat="" district="" region="" country="" nontypical="" type="" house=""/>
</Organization>
<PrivatePerson>
<Name Surname="" Firstname="" Fathername=""/>
<Econtact type=""></Econtact>
<Address street="" settlement="" postcode="" postbox="" flat="" district="" region="" country="" nontypical="" house=""/>
<Rank privilege="" socialposition="" sex=""/>
</PrivatePerson>
</Addressee>
<Writer>
<Organization fullname="" shortname="" ownership="" ogrn="" inn="">
<OfficialPerson>
<Name Surname="" Firstname="" Fathername=""/>
<Econtact type=""></Econtact>
</OfficialPerson>
</Organization>
<PrivatePerson>
<Name Surname="" Firstname="" Fathername=""/>
<Econtact type=""></Econtact>
</PrivatePerson>
</Writer>
</Document>
편집. 내가 권고 한대로 JAXB 딱지를 찾으려고 노력한다. xjc 도구는 ObjectFactory, package-info, XML의 3 가지 클래스를 생성했습니다.
public static void main(String[] args) {
try {
File file = new File("F:\\Untitled3.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(XML.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
XML xml = (XML) jaxbUnmarshaller.unmarshal(file);
System.out.println(xml);
} catch (JAXBException e) {
e.printStackTrace();
}
}
이 올바른 방법인가, 또는 나는 모든 태그와 객체를 만들고, 속성, 어떻게?
ObjectFactory f =new ObjectFactory();
XML xml1 = f.createXML();
을 ObjectFactory를를 사용해야합니다 : 나는 XML에서 개체를 만들려면이 코드를 발견 그런 다음 XML 파일을 만드시겠습니까? 새로운 자바와 jaxb 물건에, 그래서 제발 나와 함께하시기 바랍니다.
XML을 수동으로 구문 분석 하시겠습니까? 더 좋은 방법이 있습니다. [JAXB] (http://en.wikipedia.org/wiki/Java_Architecture_for_XML_Binding) –
답변 해 주셔서 감사합니다. 나는 정말로 내가 무엇을 사용해야하는지 모른다. 방금 돔을 "Java XML 읽기"로 검색하여 찾았으며 이해하기가 매우 쉬워 보였습니다. JAXB에 대한 초보자를위한 링크를주세요. – bunnyjesse112