1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package info.magnolia.importexport.filters;
35
36 import org.xml.sax.Attributes;
37 import org.xml.sax.SAXException;
38 import org.xml.sax.XMLReader;
39 import org.xml.sax.helpers.XMLFilterImpl;
40
41
42
43
44
45
46 @Deprecated
47 public abstract class SkipNodeFilter extends XMLFilterImpl {
48
49 private final static String NODE_TAG = "sv:node";
50 private final static String NAME_TAG = "sv:name";
51
52 private boolean skipping;
53
54 private int skipDepth;
55
56 public SkipNodeFilter(XMLReader parent) {
57 super(parent);
58 }
59
60 @Override
61 public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
62 if (!skipping) {
63 super.ignorableWhitespace(ch, start, length);
64 }
65 }
66
67 @Override
68 public void characters(char[] ch, int start, int length)
69 throws SAXException {
70 if (!skipping) {
71 super.characters(ch, start, length);
72 }
73 }
74
75 @Override
76 public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
77
78 String svname = atts.getValue(NAME_TAG);
79
80 if (skipping) {
81 skipDepth++;
82 return;
83 }
84 if (NODE_TAG.equals(qName) && getFilteredNodeName().equals(svname)) {
85 skipping = true;
86 return;
87 }
88
89 super.startElement(uri, localName, qName, atts);
90 }
91
92 @Override
93 public void endElement(String uri, String localName, String qName)
94 throws SAXException {
95
96 if (skipping) {
97 if (skipDepth == 0) {
98 skipping = false;
99 } else {
100 skipDepth--;
101 }
102 return;
103 }
104
105 super.endElement(uri, localName, qName);
106 }
107
108
109
110
111
112
113 protected abstract String getFilteredNodeName();
114
115 }