может кто-нибудь сказать мне, пожалуйста, как я могу установить значение атрибута в sax-элементе, чтобы он выглядел так, что id масштабируется: <document> <el id="1"><text>Motivationsschreiben.</text></el> <el id="2"><text>Sehr geehrte Damen und Herren.</text></el></document>
.атрибут атрибута элемента SAX
Я стараюсь это так:
public class Element1 {
Element e = null;
BufferedReader in;
StreamResult out;
TransformerHandler th;
AttributesImpl atts;
public static void main(String[] args) {
new Element1().doit();
}
public void doit() {
try {
in = new BufferedReader(new FileReader("D:\\Probe.txt"));
out = new StreamResult("D:\\data.xml");
initXML();
String str;
while ((str = in.readLine()) != null) {
process(str);
}
in.close();
closeXML();
} catch (Exception e) {
e.printStackTrace();
}
}
public void initXML() throws ParserConfigurationException,
TransformerConfigurationException, SAXException {
// JAXP + SAX
SAXTransformerFactory tf = (SAXTransformerFactory) SAXTransformerFactory
.newInstance();
th = tf.newTransformerHandler();
Transformer serializer = th.getTransformer();
serializer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
// pretty XML output
serializer.setOutputProperty(
"{http://xml.apache.org/xslt}indent-amount", "4");
serializer.setOutputProperty(OutputKeys.INDENT, "yes");
th.setResult(out);
th.startDocument();
atts = new AttributesImpl();
th.startElement("", "", "document", atts);
}
public void process(String s) throws SAXException {
try {
String[] elements = s.split("\\|");
atts.clear();
int i = 0;
i++;
atts.addAttribute("", "", "Id", "", "" + i);
th.startElement("", "", "el", atts);
th.startElement("", "", "text", atts);
th.characters(elements[0].toCharArray(), 0, elements[0].length());
th.endElement("", "", "text");
th.endElement("", "", "el");
}
catch (Exception e) {
System.out.print("Out of bounds! DOH! should have used vectors");
}
}
public void closeXML() throws SAXException {
th.endElement("", "", "document");
th.endDocument();
}
}
и в результате я стал таким: <?xml version="1.0" encoding="ISO-8859-1"?><document> <el Id="1"> <text Id="1">Motivationsschreiben</text> </el> <el Id="1"> <text Id="1">Sehr geehrte Damen und Herren</text> </el> <el Id="1"> <text Id="1">Mein Name </text> </el>
, но я хочу, чтобы идентификатор идет вверх, как это: <?xml version="1.0" encoding="ISO-8859-1"?><document> <el Id="1"> <text Id="1">Motivationsschreiben</text> </el> <el Id="2"> <text Id="2">Sehr geehrte Damen und Herren</text> </el> <el Id="3"> <text Id="3">Mein Name </text> </el>
Входной файл только простой текстовый файл
Motiva referschreiben Sehr geehrte Damen und Herren Mein Имя
Не могли бы вы дать мне несколько советов, что здесь не так?
Большое спасибо
большое спасибо :), он работает – user2994149