Révision 3267

tmp/org.txm.core/src/java/org/txm/xml/StaxDomConstructor.java (revision 3267)
54 54
					localname = parser.getLocalName();
55 55
					
56 56
					String ns = parser.getNamespaceURI();
57
					Element e = null;
58
					if (ns != null) {
59
						e = doc.createElementNS(ns, localname);
60
					}
61
					else {
62
						e = doc.createElement(localname);
63
					}
57
					if (ns == null) ns = "";
58
					Element e = doc.createElementNS(ns, localname);
64 59
					
65 60
					for (int i = 0; i < parser.getAttributeCount(); i++) {
66 61
						ns = parser.getAttributeNamespace(i);
......
88 83
				case XMLStreamConstants.END_ELEMENT:
89 84
					
90 85
					elements--;
91
					if (elements == 0) return doc.getDocumentElement();
86
					if (elements == 0) return doc.getDocumentElement(); // stop parsing elements now : it was the last element
92 87
					
93 88
					currentElement = (Element) currentElement.getParentNode();
94 89
					
tmp/org.txm.core/src/java/org/txm/xml/DOMIdentityHook.java (revision 3267)
20 20
	}
21 21
	
22 22
	@Override
23
	public boolean _activate() {
23
	public final boolean _activate() {
24 24
		StaxDomConstructor domConstructor = new StaxDomConstructor(parentParser.parser);
25 25
		try {
26 26
			dom = domConstructor.getDom();
27
			
27 28
			return dom != null;
28 29
		}
29 30
		catch (Exception e) {
......
34 35
	}
35 36
	
36 37
	@Override
37
	public boolean mustDeactivate() {
38
	public final boolean mustDeactivate() {
38 39
		boolean b = dom != null; // the DOM has been constructed and the XMLProcess can continue parsing
39 40
		if (b) {
40 41
			try {
......
57 58
	}
58 59
	
59 60
	@Override
60
	public boolean deactivate() {
61
	public final boolean deactivate() {
61 62
		return dom == null; // dom should be null
62 63
	}
63 64
	
......
69 70
		if (node == null) return; // nothing to write
70 71
		
71 72
		if (node.getNodeType() == Node.ELEMENT_NODE) {
73
			parentParser.writer.writeCharacters("\n");
72 74
			Element e = (Element) node;
73 75
			NodeList children = e.getChildNodes();
74 76
			if (children.getLength() > 0) {
75
				parentParser.writer.writeStartElement(e.getNamespaceURI(), e.getLocalName());
77
				String ns = e.getNamespaceURI();
78
				String ln = e.getLocalName();
79
				if (ns == null) {
80
					parentParser.writer.writeStartElement(ln);
81
				} else {
82
					parentParser.writer.writeStartElement(ns, ln);
83
				}
76 84
			}
77 85
			else {
78 86
				parentParser.writer.writeEmptyElement(e.getNamespaceURI(), e.getLocalName());
......
87 95
					parentParser.writer.writeAttribute(att.getNodeName(), att.getNodeValue());
88 96
				}
89 97
			}
98
			//parentParser.writer.writeCharacters("\n");
90 99
			
91 100
			for (int c = 0; c < children.getLength(); c++) {
92 101
				writeDOM(children.item(c));
93 102
			}
94 103
			if (children.getLength() > 0) {
95 104
				parentParser.writer.writeEndElement();
105
				parentParser.writer.writeCharacters("\n");
96 106
			}
97 107
		}
98 108
		else if (node.getNodeType() == Node.TEXT_NODE) {
tmp/org.txm.core/src/java/org/txm/xml/Hook.java (revision 3267)
120 120
			case XMLStreamConstants.END_ELEMENT:
121 121
				processEndElement();
122 122
				elements--;
123
				if (elements < 0) {
124
					Log.severe("ERROR: Hook was not interupted on time AT " + getLocation());
125
				}
123
//				if (elements < 0) {
124
//					//Log.severe("ERROR: Hook was not interupted on time AT " + getLocation());
125
//				}
126 126
				break;
127 127
			case XMLStreamConstants.PROCESSING_INSTRUCTION:
128 128
				processProcessingInstruction();
tmp/org.txm.core/src/java/org/txm/xml/XPathHookActivator.java (revision 3267)
67 67
	
68 68
	@Override
69 69
	public boolean mustActivate() {
70
		
70 71
		if (xpath == null) return false;
71 72
		if (p == null) return false;
72 73
		
......
75 76
			return p.matcher(hook.getCurrentPath()).matches() && hook.parentParser.getCurrentAttributes().equals(attributesTest);
76 77
		}
77 78
		else {
78
			return p.matcher(hook.getCurrentPath()).matches();
79
			String path = hook.getCurrentPath();
80
			return p.matcher(path).matches();
79 81
		}
80 82
	}
81 83
	

Formats disponibles : Unified diff