MSXML / Datentypen

04/02/2008 - 23:29 von Karsten Helper | Report spam
Hallo Ihr lieben,

ich habe da mal eine Frage zu XML und Datentypen.
Ich muss diverse Daten aus einer XML-Config-Datei
einlesen und kriege es irgendwie nicht hin, die Daten-
typen auszulesen.

Ich habe hier mal ein Beispiel vorbereitet. XmlToCursor
funktioniert einwandfrei, aber wie komme ich mit dem
MSXML2.DOMDocument Objekt an die Typen?

Beispiel:

TEXT TO lcXmlData NOSHOW
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<Config>
<xsd:schema id="Config" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="Config" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="logicalValue" type="xsd:boolean"
use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
<xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace"
processContents="lax"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<data logicalValue="true"/>
</Config>
ENDTEXT

*!* =XmlToCursor(lcXmlData) && "logicalValue" ist jetzt wieder vom Typ
Boolean

LOCAL loXml As MSXML2.DOMDocument, loNode As MSXML2.IXMLDOMNode, loAttribute
As IXMLDOMAttribute
loXml = CreateObject("MSXML2.DOMDocument")
IF loXml.LoadXml(lcXmlData)
? "lcXmlData geladen..."
ELSE
? "lcXmlData nicht geladen..."
RETURN .F.
ENDIF
loNode = loXML.SelectSingleNode("//data")
loAttribute = loNode.attributes(0)

? loAttribute.dataType && Specifies the data type for this node.
Read/write.
? loAttribute.nodeTypedValue && Contains the node value expressed in its
defined data type. Read/write.
? loAttribute.text && Represents the text content of the node or the
concatenated text representing the node and its descendants. Read/write.
? loAttribute.value && Contains the attribute value. Read/write.
 

Lesen sie die antworten

#1 Oswald Petersen
07/02/2008 - 18:04 | Warnen spam
"Karsten Helper" wrote:

Hallo Ihr lieben,

ich habe da mal eine Frage zu XML und Datentypen.
Ich muss diverse Daten aus einer XML-Config-Datei
einlesen und kriege es irgendwie nicht hin, die Daten-
typen auszulesen.

Ich habe hier mal ein Beispiel vorbereitet. XmlToCursor
funktioniert einwandfrei, aber wie komme ich mit dem
MSXML2.DOMDocument Objekt an die Typen?

Beispiel:

TEXT TO lcXmlData NOSHOW
<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<Config>
<xsd:schema id="Config" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:element name="Config" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="data" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="logicalValue" type="xsd:boolean"
use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:choice>
<xsd:anyAttribute namespace="http://www.w3.org/XML/1998/namespace"
processContents="lax"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<data logicalValue="true"/>
</Config>
ENDTEXT

*!* =XmlToCursor(lcXmlData) && "logicalValue" ist jetzt wieder vom Typ
Boolean

LOCAL loXml As MSXML2.DOMDocument, loNode As MSXML2.IXMLDOMNode, loAttribute
As IXMLDOMAttribute
loXml = CreateObject("MSXML2.DOMDocument")
IF loXml.LoadXml(lcXmlData)
? "lcXmlData geladen..."
ELSE
? "lcXmlData nicht geladen..."
RETURN .F.
ENDIF
loNode = loXML.SelectSingleNode("//data")
loAttribute = loNode.attributes(0)

? loAttribute.dataType && Specifies the data type for this node.
Read/write.
? loAttribute.nodeTypedValue && Contains the node value expressed in its
defined data type. Read/write.
? loAttribute.text && Represents the text content of the node or the
concatenated text representing the node and its descendants. Read/write.
? loAttribute.value && Contains the attribute value. Read/write.



Ähnliche fragen