3

私は何時間も試し、Google で考えられるすべての例を調べましたが、Android で simplexml を使用してこの XML ファイルから属性を取得する方法がわかりません。

XML ファイル:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Service>
<Facture FactNo="" 
 NoAppel="6" 
 ProjDate="2012-04-01"
 NomProj="MR. H. BLOOM"
 AddProj="20, GARDEN ROAD" 
 VilleProj="WESTMOUNT, QC."
 CPProj="" ContProj="M. BLOOM" 
 TelProj="(555) 555-9571" 
 SysMarque="" 
 SysMod="" 
 SysType="" 
 SysSerie="" 
 SysNo=""
 SysTemp=""
 Tension=""
 Phase="0"
 Halo="False"
 POFact=""
 NomFact=""
 AdrsFact="" 
 VilleFact=""
 CPFact=""
 TelFact=""
 FaxFact=""
 Trouble=""
 TbLock="False"
 TDesc=""
 TRec=""
 Depl="False"
 TM="False" 
 NoTM=""
 TPA="False"
 NoTPA=""
 CS="False"
 NoCS=""
 Estim="False"
 NoEstim=""
 Proj="False"
 NoProj=""
 Term="True" 
 Incompl="False"
 Garant="False"
 NoGarant=""
 Annexe="False"
 NoAnnexe=""
 NoContrat="00007"
 MainDoeuvre="0,0000" 
 Materiel="0,0000"
 SousTot=""
 TPS="0,0000"
 TPSTaux="0.05"
 TVQ="0,0000"
 TVQTaux="0.085"
 Total="0,0000" />
<Pieces>
<Piece Qty="10" Desc="test" PO="12345678" PrixUnit="0.0000" Montant="0.0000" />
<Piece Qty="25" Desc="testitem2" PO="33333" PrixUnit="22.0000" Montant="220.0000"            />
<Piece Qty="35" Desc="testitem3" PO="44444" PrixUnit="33.0000" Montant="440.0000"     />
</Pieces>
<Techs>
<Tech Nom="Bobby" Reg="1" TD="2" Taux="3.5000" Montant="0.0000" Lock="False" Date="2012-04-01   
10:49:00" />
</Techs>
<Sign />
<Pics />
</Service>

XML ファイルはサードパーティであるため、変更できません。

サービスのクラス (ピースのみ表示):

    //Liste Pieces
    @ElementList(name="Piece", inline=true)
    @Path("Pieces")
    private List<PieceXML> pieces;

    public List<PieceXML> getpieces()
    {
        return pieces;
    }       

ピースのクラス:

@Root(name="Piece")
public class PieceXML 
{

@Attribute
private Double Qty;
@Attribute
private String Desc;
@Attribute
private String PO;
@Attribute
private Double PrixUnit;
@Attribute
private Double Montant;
 ...}

私が実際に必要としているのは、Piece の属性値から配列を作成することですが、実際にはその方法がわかりません。どんな助けでも大歓迎です。前もって感謝します。

4

1 に答える 1

1

OK、ついに自分で動作するようになりました。それはかなり簡単だったことがわかります。私はそれをずっと持っていましたが、アプリケーションの既存のクラスとまったく同じように名前が付けられたノードに問題があり、返されたオブジェクトのリストを読み取るときに null 値を取得したため、機能しませんでした。その場合、私は

@Path(pathname) 

完全なパスで呼び出す

@Path("Service/Pieces").  

私はそれから私のものを手に入れることができました

List<PieceXML>

オブジェクトを作成し、ArrayLists を埋めます。

于 2012-04-29T13:24:31.823 に答える