io.github.h800572003.generate.mapper.XmlSqlReader Maven / Gradle / Ivy
The newest version!
package io.github.h800572003.generate.mapper;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.StringReader;
import java.util.function.BiConsumer;
public class XmlSqlReader {
public SqlConfigDTO loadByString(String xmlString) {
return loadByString(xmlString, (i, v) -> {
});
}
public SqlConfigDTO loadByString(String xmlString, BiConsumer consumer) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader(xmlString));
Document document = builder.parse(is);
Element root = document.getDocumentElement();
SqlConfigDTO sqlConfigDTO = new SqlConfigDTO();
NodeList sqlStringList = root.getElementsByTagName("sqlString");
NodeList describe = root.getElementsByTagName("describe");
if (describe.getLength() > 0) {
sqlConfigDTO.setDescribe(describe.item(0).getTextContent());
}
NodeList interfaceString = root.getElementsByTagName("interfaceString");
if (interfaceString.getLength() > 0) {
sqlConfigDTO.setInterfaceString(interfaceString.item(0).getTextContent());
}
Element sqlStringElement = (Element) sqlStringList.item(0);
NodeList appendList = sqlStringElement.getElementsByTagName("append");
for (int i = 0; i < appendList.getLength(); i++) {
SqlConfigDTO.SqlAppender sqlAppender = new SqlConfigDTO.SqlAppender();
Element appendElement = (Element) appendList.item(i);
sqlAppender.setValue(appendElement.getTextContent());
String valueAttribute = appendElement.getAttribute("id");
if (!valueAttribute.isEmpty()) {
sqlAppender.setId(valueAttribute);
}
sqlConfigDTO.getSqlString().add(sqlAppender);
}
NodeList parametersList = root.getElementsByTagName("parameters");
Element parametersElement = (Element) parametersList.item(0);
NodeList valueList = parametersElement.getElementsByTagName("value");
for (int i = 0; i < valueList.getLength(); i++) {
SqlConfigDTO.ParameterValue parameterValue = new SqlConfigDTO.ParameterValue();
Element valueElement = (Element) valueList.item(i);
String id = valueElement.getAttribute("id");
String value = valueElement.getAttribute("value");
parameterValue.setId(id);
parameterValue.setValue(value);
sqlConfigDTO.getParameters().add(parameterValue);
}
consumer.accept(root, sqlConfigDTO);
return sqlConfigDTO;
} catch (Exception e) {
throw new RuntimeException("xml error", e);
}
}
}