XML-Element wird nicht gefunden
-
ich versuche anhand des beispiels in der FAQ nun folgende Datei einzulesen Doch leider findet der meinen Element Size nicht.
<?xml version="1.0" encoding="UTF-8"?>
<kb:Config xmlns:kb="http://example.org/KB">
<Size>100</Size>
</kb:Config>_di_IXMLNodeList NodeList; _di_IXMLNode Node; NodeList = pXMLDoc->DocumentElement->ChildNodes; if (NodeList) { Node = NodeList->FindNode(L"Size"); if (Node) { } }als Node ist immer Null. Wroan könnte das liegen?
MfG
-
leider ist nicht so richtig ersichtlich ob "Size" eine DocumentElement->ChildNodes Node ist, da der hier gezeigte xml text nicht korrekt ist. Sollte es so sein, würde ich es so oder so ähnlich machen.
nimm diese hier zum testen
<?xml version="1.0" encoding="UTF-8"?>
<DocumentElement>
<Size>100</Size>
</DocumentElement>Außerdem wird eine exeption ausgelößt, wenn Du das xml document auf active setzt und nicht beim laden der Datei.
_di_IXMLNodeList NodeList = pXMLDoc->DocumentElement->ChildNodes; if (NodeList) { if (NodeList->IndexOf((String)"Size") > -1) { _di_IXMLNode Node = NodeList->Nodes[(String)"Size"]; AnsiString test = Node->Text; } }
-
warum ist meine xml Datei nicht koorekt. Ohne den Namensraum hat der MSValidierer die xml datei nicht correct zu meiner Grammatik erkannt.
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:kb="http://example.org/KB"
targetNamespace="http://example.org/KB">
<xsd:element name="Config" type="kb:Config" />
<xsd:simpleType name="TWord">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="65535" />
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="Config">
xsd:sequence
<xsd:element name="Size" type="kb:TWord" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
-
maikhaenig schrieb:
warum ist meine xml Datei nicht koorekt.
was soll ich da sagen ? weil der gezeigte Ausschnitt kein korrektes xml-dokument ist.
<?xml version="1.0" encoding="UTF-8"?>
<kb:Config xmlns:kb="http://example.org/KB">
<Size>100</Size>
</kb:Config>
-
also ich habe jetzt folgende xml datei:
<?xml version="1.0" encoding="UTF-8"?>
<Config
xsi:schemaLocation="http://www.test.de ReaderConfig1.xsd"
xmlns="http://www.test.de"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Communication>
<DeviceAddress>1</DeviceAddress>
</Communication>
</Config>und folgendes xsd Schema:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns="http://www.test.de"
targetNamespace="http://www.test.de"
elementFormDefault="qualified">
<xsd:element name="Config" type="TConfig" /><xsd:simpleType name="TByte">
<xsd:restriction base="xsd:integer">
<xsd:minInclusive value="0" />
<xsd:maxInclusive value="255" />
</xsd:restriction>
</xsd:simpleType><xsd:complexType name="TConfig">
xsd:sequence
<xsd:element name="Communication">
xsd:complexType
xsd:sequence
<xsd:element name="DeviceAddress" type="TByte" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>Diese Datei kann ich auch gut lesen unter Borland. Meine frage ist: Wenn ich diese Datei auch aus dem Borland erzeugen will, wie bekomme ich die erste Zeile hin ?
<Config
xsi:schemaLocation="http://www.test.de Config1.xsd"
xmlns="http://www.test.de"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">MfG
-
achso ich habe schon
pXML = new TXMLDocument(""); pXML->Options = pXML->Options << doNodeAutoIndent; pXML->Active = true; pXML->Encoding = "UTF-8"; pXML->DocumentElement = pXML->CreateElement("Config", "http://www.test.de"); pXML->DocumentElement->AddChild("Communication"); pXML->DocumentElement->ChildNodes->FindNode("Communication")->AddChild("DeviceAddress"); pXML->DocumentElement->ChildNodes->FindNode("Communication")->ChildNodes->FindNode("DeviceAddress")->NodeValue = 1; pXML->SaveToFile("ConfigTest2.xml"); delete pXML;dies gibt mir folgendes:
<?xml version="1.0" encoding="UTF-8"?>
<Config xmlns="http://www.test.de">
<Communication>
<DeviceAddress>1</DeviceAddress>
</Communication>
</Config>jetzt ist die frage wie bekomme ich die beiden zeilen:
xsi:schemaLocation="http://www.test.de Config1.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"noch hinein
MfG