임베디드/중첩 XML에 대해 몇 가지 작업을 수행하고 있습니다. SAXParser를 사용하여 전체 XML 파일을 구문 분석하고 있습니다. 태그가있는 전체 중첩 XML을 가져 오려고합니다. 그리고 value.For 예를 들어, 내 XML 모양.SAX 파서를 사용하여 큰 XML 파일에서 Embeded/Nested XML을 얻는 방법
<ANY_ELEMENT>
..... < /ANY-ELEMENT>
태그 내에 전체 XML을 원합니다.
<?xml version="1.0" encoding="UTF-8"?>
<x:xMessage xmlns:x="http://www.connecture.com/integration/x" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.connecture.com/integration/x xMessageWrapper.xsd
">
<x:xMessageHeader>
<Version>850</Version>
<Source>Source</Source>
<Target>target</Target>
<Timestamp>2013-12-31T12:00:00</Timestamp>
<RequestID>123456</RequestID>
<ResponseID>54321</ResponseID>
<Priority>3</Priority>
<Username>Deepak</Username>
<Password>Kumar</Password>
</x:xMessageHeader>
<x:xMessageBody>
<ANY-ELEMENT>
<xEnveloped_834A1 xsi:schemaLocation="....." xmlns="......."
..........................
..........................
some Complex XML
..........................
..........................
..........................
</ANY-ELEMENT>
</x:XMessageBody>
</x:XMessage>
핸들러 클래스 샘플 코드 :
public class MessageWrapperHandler extends DefaultHandler {
private boolean bActualMessage = false;
private String actualMessage = null;
private long lengthActualMessage=0;
public void startElement(String uri, String localName, String qName, Attributes attributes) {
if (qName.equalsIgnoreCase("ANY-ELEMENT")) {
bActualMessage = true;
//lengthActualMessage=How to know the length of Child XML
}
}
public void characters(char ch[], int start, int length) {
if (bActualMessage) {
actualMessage = new String(ch, start, length);
//trying to get embedded XML
bActualMessage = false;
}
}
}
그러나 다음 요소 후 그래서 그것을 달성하는 방법 그치만, 나에게주는 XML 내용 때문이다. 편집은 : 당신은 내가 StAX를 사용하는 것이 좋습니다 것 대신에 SAX의 CDATA
감사 Blasise 난 그냥와 ANY-ELEMENT> CDATA에 같은 코드가 작동 사이의 모든 데이터를 퍼트. –