Hoy les traigo un caso de xml data binding, he hecho un par de tutoriales y todo bien. Pero al aplicarlo a mi caso tengo algunas dudas. Tengo el siguiente código XML (si alguien ve un error de sintaxis favor de hacérmelo saber):
<sve:Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sve="urn:oasis:names:specification:ubl:schema:xsd:Order-2" xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonExtensionComponents-2">
<UBLExtensions />
<UBLVersionID />
<ID>23704</ID>
<IssueDate>2012-05-24</IssueDate>
<IssueTime>12:33:35.4844930+02:00</IssueTime>
<Note>Konferensbokning test av SveOrder</Note>
<BuyerCustomerParty>
<Party>
<PartyIdentification>
<ID>2520016326</ID>
</PartyIdentification>
<PartyName>
<Name>Kinna församling</Name>
</PartyName>
<PostalAddress>
<StreetName>Prästgatan 7</StreetName>
<CityName>Kinna</CityName>
<PostalZone>51154</PostalZone>
</PostalAddress>
<Contact>
<Name>Bengt Bernhardsson</Name>
</Contact>
</Party>
</BuyerCustomerParty>
<SellerSupplierParty xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<Party>
<PartyIdentification>
<ID>2520012345</ID>
</PartyIdentification>
<PartyName>
<Name>SellerName</Name>
</PartyName>
<PostalAddress>
<StreetName>sellerAdress</StreetName>
<CityName>SellerCity</CityName>
<PostalZone>SellerZip</PostalZone>
</PostalAddress>
<Contact>
<Name>Conrad Carlsson</Name>
<ElectronicMail>conrad.carlsson@mail.se</ElectronicMail>
</Contact>
</Party>
</SellerSupplierParty>
<OrderLine xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<LineItem>
<Quantity>1</Quantity>
<Price>
<PriceAmount currencyID="AED">1600</PriceAmount>
</Price>
<Item>
<Description>Konferens</Description>
<AdditionalItemProperty>
<Name>accounting:dim2</Name>
<Value>111319</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>accounting:dim1</Name>
<Value>28973</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>accounting:account</Name>
<Value>3613</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>vat:vatcode</Name>
<Value>900</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>ProductSpecification</Name>
<Value>Deltagare: Sofia Svensson</Value>
</AdditionalItemProperty>
</Item>
</LineItem>
</OrderLine>
<OrderLine xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<LineItem>
<Quantity>1</Quantity>
<Price>
<PriceAmount currencyID="AED">1600</PriceAmount>
</Price>
<Item>
<Description>Konferens</Description>
<AdditionalItemProperty>
<Name>accounting:dim2</Name>
<Value>111319</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>accounting:dim1</Name>
<Value>28973</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>accounting:account</Name>
<Value>3613</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>vat:vatcode</Name>
<Value>900</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>ProductSpecification</Name>
<Value>Deltagare: Maria Marie Månsson</Value>
</AdditionalItemProperty>
</Item>
</LineItem>
</OrderLine>
<OrderLine xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<LineItem>
<Quantity>1</Quantity>
<Price>
<PriceAmount currencyID="AED">1600</PriceAmount>
</Price>
<Item>
<Description>Konferens</Description>
<AdditionalItemProperty>
<Name>accounting:dim2</Name>
<Value>111319</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>accounting:dim1</Name>
<Value>28973</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>accounting:account</Name>
<Value>3613</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>vat:vatcode</Name>
<Value>900</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>ProductSpecification</Name>
<Value>Deltagare: Erik Eriksson</Value>
</AdditionalItemProperty>
</Item>
</LineItem>
</OrderLine>
<OrderLine xmlns="urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2">
<LineItem>
<Quantity>1</Quantity>
<Price>
<PriceAmount currencyID="AED">1600</PriceAmount>
</Price>
<Item>
<Description>Konferens</Description>
<AdditionalItemProperty>
<Name>accounting:dim2</Name>
<Value>111319</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>accounting:dim1</Name>
<Value>28973</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>accounting:account</Name>
<Value>3613</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>vat:vatcode</Name>
<Value>900</Value>
</AdditionalItemProperty>
<AdditionalItemProperty>
<Name>ProductSpecification</Name>
<Value>Deltagare: Sven Svensson</Value>
</AdditionalItemProperty>
</Item>
</LineItem>
</OrderLine>
</sve:Order>
Utilizando el Data Binding wizard obtengo la clase correspondiente. Para tratar de acceder a los datos creo un form con varios TEdit, un TButton y un TXMLDocument.
declaracion global:
public order: IXMLOrderType;
En el evento OnCreate de mi form tengo:
procedure TfrmSveorderTest.FormCreate(Sender: TObject); begin inherited; order := GetOrder(xmldc1) end;
Pero en OnClick del botón algo tan simple como:
edt1.Text := IntToStr(order.ID);
Me da el error: 'Could not convert variant of type (Null) into type (Integer)'
Por qué no está captando los valores que hay en el xml? Alguna idea? Si alguien pudiera generar la clase con la herramienta de Data Binding y hacer un par de pruebas lo agradeceria mucho.
Saludos