使用SAXParser进行Java XML解析
我有一个API。当我们请求时,它将生成XML作为响应数据 以下是描述字段的API响应:使用SAXParser进行Java XML解析,java,xml,jakarta-ee,saxparser,Java,Xml,Jakarta Ee,Saxparser,我有一个API。当我们请求时,它将生成XML作为响应数据 以下是描述字段的API响应: <parameter> <name>description</name> <value>Description Description</value> </parameter> 描述 描述 下面是解析XML文件(SAXPraser)的代码 公共类WorkOrderDataHandler扩展了DefaultHandler{ 公共Wor
<parameter>
<name>description</name>
<value>Description Description</value>
</parameter>
描述
描述
下面是解析XML文件(SAXPraser)的代码
公共类WorkOrderDataHandler扩展了DefaultHandler{
公共WorkOrderDataHandler(){
parameterList=新的ArrayList();
contentsOfTheCurrentTag=新的StringBuilder();
}
public void startElement(字符串uri、字符串localName、字符串qName、,
属性)引发SAX异常{
if(qName.equalsIgnoreCase(“详细信息”)){
ticketData=新的ticketTintermediateData();
}
if(qName.equalsIgnoreCase(“参数”)){
参数=新参数();
}
}
公共void endElement(字符串uri、字符串localName、字符串qName)
抛出SAX异常{
int length=contentsOfTheCurrentTag.length();
if(qName.equalsIgnoreCase(“名称”)){
参数.setName(contentsOfTheCurrentTag.toString().trim());
}
if(qName.equalsIgnoreCase(“值”)){
parameter.setValue(contentsOfTheCurrentTag.toString().trim());
}
if(qName.equalsIgnoreCase(“参数”)){
parameterList.add(参数);
}
if(qName.equalsIgnoreCase(“参数”)){
if(“workorderid.equals(parameter.getName())){
ticketData.setIt360ticketid(Integer.parseInt(参数
.getValue().trim());
}
else if(“description”.equals(parameter.getName())){
System.out.println(“Handler desc”+parameter.getValue());//DescriptionDescription
ticketData.setDescription((parameter.getValue());
}
}
contentsOfTheCurrentTag.delete(0,长度);
}
公共无效字符(字符ch[],整数开始,整数长度)
抛出SAX异常{
contentsOfTheCurrentTag.append(ch,start,length);
}
}
输出:
当我试图解析描述字段时。我得到的输出是DescriptionDescription
任何人都可以提供帮助您在DefaultHandler中重写的是什么方法?endelement和startelement方法无效字符(char ch[],int start,int length)抛出SAXException{contentsOfTheCurrentTag.append(ch,start,length);}剩余字段正确获取。您可以发布更完整的代码吗?
public class WorkOrderDataHandler extends DefaultHandler {
public WorkOrderDataHandler() {
parameterList = new ArrayList<Parameter>();
contentsOfTheCurrentTag = new StringBuilder();
}
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
if (qName.equalsIgnoreCase("Details")) {
ticketData = new TicketInterMediateData();
}
if (qName.equalsIgnoreCase("parameter")) {
parameter = new Parameter();
}
}
public void endElement(String uri, String localName, String qName)
throws SAXException {
int length = contentsOfTheCurrentTag.length();
if (qName.equalsIgnoreCase("name")) {
parameter.setName(contentsOfTheCurrentTag.toString().trim());
}
if (qName.equalsIgnoreCase("value")) {
parameter.setValue(contentsOfTheCurrentTag.toString().trim());
}
if (qName.equalsIgnoreCase("parameter")) {
parameterList.add(parameter);
}
if (qName.equalsIgnoreCase("parameter")) {
if ("workorderid".equals(parameter.getName())) {
ticketData.setIt360ticketid(Integer.parseInt(parameter
.getValue().trim()));
}
else if ("description".equals(parameter.getName())) {
System.out.println("Handler desc"+ parameter.getValue());//DescriptionDescriptionÂ
ticketData.setDescription((parameter.getValue()));
}
}
contentsOfTheCurrentTag.delete(0, length);
}
public void characters(char ch[], int start, int length)
throws SAXException {
contentsOfTheCurrentTag.append(ch, start, length);
}