Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > XML > obtener el valor de un float con XSD
-Foros de debate

XML
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

obtener el valor de un float con XSD
Enviado por Davinia el día 25 de marzo de 2004

Hola,
quiero leer un float de un fichero XML pero cuando recojo el valor con:
hr = pNodeAttrPrice->get_nodeValue(&value);

lo guarda como cadena, ya que entra en el siguiente if:

if(value.vt == VT_BSTR)
printf("is a string %s\n", value.bstrVal); //muestra el valor como
cadena

printf("valor: %f\n", value.fltVal); //muestra 0.000

.
¿Que estoy haciendo mal?


/**********myfile.xml****************/
<?xml version="1.0"?>
<Library xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="mifile.xsd">
<Book price = "20.5"></Book>
</Library>

/******myfile.xsd**********/
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Library">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Book" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="price" type="xsd:float" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>



//File .cpp Estoy usando MSXML 4.0 en VisualC++

int main()
{
IXMLDOMDocument2Ptr pXMLDom;
IXMLDOMNodeListPtr pNodeChildrenLibrary = NULL;
IXMLDOMNodePtr pNodeBook = NULL;
IXMLDOMNamedNodeMapPtr pAttrListBook = NULL;
IXMLDOMNodePtr pNodeAttrPrice = NULL;
HRESULT hr;

CoInitialize(NULL);

hr = pXMLDom.CreateInstance(__uuidof(DOMDocument40));
if (FAILED(hr))
{
printf("Failed to instantiate DOMDocument40 class\n");
return NULL;
}

pXMLDom->async = VARIANT_FALSE;
pXMLDom->validateOnParse = VARIANT_TRUE;
pXMLDom->resolveExternals = VARIANT_TRUE;

if ( pXMLDom->load("myfile.xml") != VARIANT_TRUE)
{
printf("Failed load xml data from file.\n%s\n",
(LPCSTR)pXMLDom->parseError->Getreason());
return NULL;
}

pNodeChildrenLibrary = pXMLDom->selectNodes("//Library[1]/*");
printf("Lenght: %d\n",pNodeChildrenLibrary->length);

pNodeBook = pNodeChildrenLibrary->item[0];
pAttrListBook = pNodeBook->attributes;
pNodeAttrPrice = pAttrListBook->item[0];
MessageBox(NULL, (LPCSTR)pNodeAttrPrice->text, "Price:", MB_OK);

VARIANT value;

hr = pNodeAttrPrice->get_nodeValue(&value);

if(value.vt == VT_BSTR)
printf("is a string %s\n", value.bstrVal);

printf("valor: %f\n", value.fltVal);

pNodeChildrenLibrary.Release();
pNodeBook.Release();
pAttrListBook.Release();
pNodeAttrPrice.Release();

CoUninitialize();
return NULL;
}

 

Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network