Conversia XSD XML
Conversia XSD XML
Programul meu trage de date dintr-un fișier XML direct (ChildValues []). Cu XML totul este bine, dar nu a fost o sarcină pentru a primi date de la XSD. Cum pot converti intern XSD-fișier XML-date?
Nu va solicita, cum să-l pună în aplicare? Nu pot să dau seama ce să utilizați pentru a citi valorile. În XML, ChildValues [], ci să-i incite la culcare erori XSD.
În cazul în care nu este dificil - exemplu simplu de a lucra cu XSD, pliz. Cel puțin ca valoare COUNT. Toate Internet scotoci - Nitsche nu merită :(
XSD este, de asemenea, XML. Care sunt problemele?
Nicăieri nu este acolo valoarea legendă :( opțiunea de a stoca valori și XML în mod necesar mai trage? Atunci de ce este nevoie de XSD, în cazul în care este posibil să se ia în întregul XML vechi?
dar nu a fost o sarcină pentru a primi date de la XSD.
Definiți în primul rând, există date, dacă aveți nevoie de XSD și orice altceva.
Apoi, oamenii par a creierului.
Elaboreaza obiectelor stocate și proprietățile lor în sided XSD-file (de exemplu, componente TLabel și legarea Legendă). Programul meu ar trebui să descarce acest fișier și adăugați aceste obiecte în formă.
La fel cu XML am făcut, totul a fost simplu, și grebla conductor solid. Chiar și eu nu înțeleg cum să se refere la un anumit element, structura de fișiere aduce dureri de cap.
XSD nafik Nu am nevoie, dar fișierele clientului, nu poți face nimic :(
Chiar și eu nu înțeleg cum să se refere la un anumit element
Da, la fel ca într-un simplu XML.
Deoarece XSD este, de asemenea, XML.
XSD - o diagramă care descrie un document XML
în XSD păstrat doar domeniul, tipurile lor de date, succesiunea și nimic altceva lor.
datele trebuie să fie stocate într-un document XML separat. Pentru a verifica conformitatea (validare) pentru a încărca parser XML pentru a conecta schema XSD
XMLValidate.js:
var sOutput = validateFile ( "100000.xml");
WScript.Echo (sOutput);
funcționa validateFile (strFile)
# XA0; # XA0; // Creați un cache schemă și adăugați books.xsd la acesta.
# XA0; # XA0; xs var = new ActiveXObject ( "MSXML2.XMLSchemaCache.4.0");
# XA0; # XA0; xs.add ( "", "ICHB_EA.xsd");
# XA0; # XA0; // Crearea unui obiect XML DOMDocument.
# XA0; # XA0; var xd = new ActiveXObject ( "MSXML2.DOMDocument.4.0");
# XA0; # XA0; // Asociați cache-ul schemei la DOMDocument „s
# XA0; # XA0; // colectare scheme.
# XA0; # XA0; xd.schemas = xs;
# XA0; # XA0; // Load books.xml ca documentul DOM.
# XA0; # XA0; xd.async = false;
# XA0; # XA0; xd.validateOnParse = true;
# XA0; # XA0; xd.resolveExternals = true;
# XA0; # XA0; xd.load (strFile);
# XA0; # XA0; // returneaza rezultate de validare în mesaj către utilizator.
# XA0; # XA0, în cazul în care (! Xd.parseError.errorCode = 0)
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; întoarce ( „Validarea nu a reușit pe“ + strFile +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ n =====================" +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ nMotiv:" + xd.parseError.reason +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ nSource:" + xd.parseError.srcText +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ nLine:" + xd.parseError.line + "\ n");
# XA0; # XA0;>
# XA0; # XA0; altcineva
# XA0; # XA0; # XA0; # XA0; întoarce ( „Validare a reușit pentru“ + strFile +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; "\ n ====================== \ n" +
# XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; # XA0; xd.xml + "\ n");
>
OK, pentru XML:
# XA0; rezultat: = xml.ChildNodes [ "nodului"] ChildValues [ "elementului"] ;. *
deja pentru XSD, create pe baza aceluiași XML folosind XML Mapper, nu role. Unde să sape?
Și unde vedeți în nodul XSD numit „nod“?
Atunci cum pot întoarce la „numele elementului“ conținut de> cantalia # XA0; (24.08.07 11:12) [4]
?
Vă mulțumesc și aceeași :(
> [13] cantalia # XA0; (24.08.07 11:57)
xs: - spațiu de nume
trebuie să-l specificați la accesarea nodului.
Dacă doriți să-l ignore, puteți (de exemplu XPath)
rootNode.selectSingleNode ( "* [locală name () =" elementul "]")
Să presupunem că am nevoie pentru a scoate din XSD (a se vedea. [4]), valoarea
Seq-nu este nevoie de a scrie:
Rezultatul: = xml.ChildNodes [ "xs: element de"] ChildValues [ "name"] ;.
?
N-am face afară :(
var
# XA0; Doc: TXMLDocument;
# XA0; Node: IXMLNode;
# XA0; V: OleVariant;
# XA0; Doc: = TXmlDocument.Create (auto);
# XA0; Doc.LoadFromFile ( "c: \ test.xsd");
# XA0; Doc.Active: = true;
# XA0; Nod: = Doc.DocumentElement;
# XA0; V: = Node.ChildNodes [ "xs: Element"] Atribute [ "name"] ;.
Constant scrie „Doar un singur element de nivel superior este permisă într-un document XML“.
Exemplu Sunteți absolut identice cu ale mele. Jură. Ce sa întâmplat?
> cantalia # XA0; (24.08.07 13:56) [19]
Totul a dat seama, eroarea a fost în indicarea XML, în locul nodului [11 cm]
Nod: = Doc.DocumentElement;
Rezultatul: = xml.ChildNodes [ "nodului"] ChildValues [ "elementul"] ;. # XA0; // eroare!
Rezultatul: = node.ChildNodes [ "nodului"] ChildValues [ "elementul"] ;. // OK
Vă mulțumesc foarte mult, clickmaker Respect separat :)
O altă întrebare: cum să se deplaseze pe următoarea. element din ciclul?
# XA0;
# XA0; # XA0;
# XA0; # XA0; # XA0;
# XA0; # XA0; # XA0;
# XA0; # XA0; # XA0;
# XA0; # XA0;
# XA0;
În acest fișier, trebuie să iau pe rând pentru a obține TImage, TLabel și TBitBtn.
Eu fac acest lucru:
Node.ChildNodes.Nodes [ "complexType"] childNodes [ "secventa"] childNodes [ "elementul"] .Attributes [ "name"] ..;
Ea produce același atribut TImage. Cum să obțineți o listă cu toate atributele?
pentru i: = 0 până la ChildNodes.Count-1