Как изменить XML с помощью синтаксического анализатора саксофона XML - PullRequest
0 голосов
/ 07 ноября 2019

как я могу изменить свой номер значения тега XML с помощью синтаксического анализатора java sax XML. Я хочу изменить значение атрибута числового тега name = abc.

<college>
<Student>
<number name='Xyz'/>
<roll no>102</roll no>
</Student>
</college>

Я попытался с помощью кода ниже, чтобы изменить атрибут числового тега. В этом коде я не получил никакой ошибки, но он не может изменить номер тега.

import java.io.StringReader;

import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXSource;
import javax.xml.transform.stream.StreamResult;

import org.xml.sax.Attributes;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLFilterImpl;
import org.xml.sax.helpers.XMLReaderFactory;

public class Saxdemo2 {
    public static void main(String[] args) throws Exception {
        String xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"+
    "<college>"+
    "<Student>"+
    "<number name='Xyz'/>"+
    "<roll no>102</roll no>"+
    "</Student>"+
    "</college>";
        XMLReader xr = new XMLFilterImpl(XMLReaderFactory.createXMLReader()) {
            private String tagName = "";
            @Override
            public void startElement(String uri, String localName, String qName, Attributes atts)
                    throws SAXException {
                tagName = qName;
                super.startElement(uri, localName, qName, atts);
            }
            public void endElement(String uri, String localName, String qName) throws SAXException {
                tagName = "";
                super.endElement(uri, localName, qName);
            }
            @Override
            public void characters(char[] ch, int start, int length) throws SAXException {
                if (tagName.equals("name")) {
                    ch = "abc".toCharArray();
                    start = 0;
                    length = ch.length; 
                }
                super.characters(ch, start, length);
            }
        };
        Source src = new SAXSource(xr, new InputSource(new StringReader(xml)));
        Result res = new StreamResult(System.out);
        TransformerFactory.newInstance().newTransformer().transform(src, res);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...