gpt4 book ai didi

java - 如何针对这种情况调整我的代码以在 Android 中进行 SAX XML 解析

转载 作者:行者123 更新时间:2023-11-29 06:17:38 25 4
gpt4 key购买 nike

根据 Stackoverflow 上某人的建议,我将解析方法更改为 SAXParser。

多亏了不同的教程,我才能够让它工作,而且我不得不说它确实工作得更快(这对我的应用程序非常重要)。

但是,问题是我的 XML 文件比我见过的教程示例 XML 更深。

这是我的 XML 文件的示例:

<Message>  

<Service>servicename</Service>

<Insurances>

<BreakdownInsurance>

<Name>Insurance name</Name>

<InsuranceNR/>

<LicenseNr/>

</BreakdownInsurance>

<CarDamageInsurance>

<Name>Insurance name 2</Name>

<InsuranceNR></InsuranceNR>

</CarDamageInsurance>
</Insurances>

<Personal>
<Name>my name</Name>
</Personal>
</Message>

我可以获得姓名等个人详细信息,但我的代码似乎不适用于保险。我认为这是因为它多了一个节点。

这是我在 Handler 类中使用的代码:

@Override
public void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {
currentElement = true;
if (localName.equals("Message")) {
geg = new GegevensXML();
}
}

@Override
public void endElement(String namespaceURI, String localName, String qName) throws SAXException {
currentElement = false;

/********** Autopech **********/
if (localName.equals("Name")) {
geg.setAutopechMaatschappij(currentValue);
}
else if (localName.equals("InsuranceNR")){
geg.setAutopechPolis(currentValue);
}
else if (localName.equals("LicenseNr")){
geg.setAutopechKenteken(currentValue);
}

@Override
public void characters(char ch[], int start, int length) {
if (currentElement) {
currentValue = new String(ch, start, length);
currentElement = false;
}

那我该如何调整呢?

最佳答案

@Overridepublic void startElement(String namespaceURI, String localName, String qName, Attributes atts) throws SAXException {    currentElement = true;    if (localName.equals("Message")) {        geg = new GegevensXML();    }    if(localName.equals("BreakdownInsurance"))    {      BreakdownInsurance = true;    }}@Overridepublic void endElement(String namespaceURI, String localName, String qName) throws SAXException {    currentElement = false;    /********** Autopech **********/    if (localName.equals("Name"))    {     if(BreakdownInsurance)     {       geg.setBreakdownInsuranceName(currentValue);       BreakdownInsurance = false;     }     else     {       geg.setAutopechMaatschappij(currentValue);      }    }    else if (localName.equals("InsuranceNR")){        geg.setAutopechPolis(currentValue);    }    else if (localName.equals("LicenseNr")){        geg.setAutopechKenteken(currentValue);    }

类似地对其他情况执行此操作...“BreakdownInsurance”是一个 boolean 值。将其用作标志...

关于java - 如何针对这种情况调整我的代码以在 Android 中进行 SAX XML 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4490081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com