- Offizieller Beitrag
Hey,
Wahrscheinlich ist es schon etwas spät, auf der anderen Seite muss ich auch zu geben, dass ich gewisse Defizite habe was Reguläre Ausdrücke angeht
Folgendes Problem: Ein riesiges Schemata (XSD Datei) soll in ein Array gelesen werden. Die Datei is wie folgt aufgebaut:
Spoiler anzeigen
<xs:complexType name="cmplx1">
<xs:sequence>
<xs:element name="name1" type="type1"/>
<xs:element name="nameN" type="typeN"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="cmplxN">
<xs:sequence>
<xs:element name="name1" type="type1"/>
<xs:element name="nameN" type="typeN"/>
</xs:sequence>
</xs:complexType>
Alles anzeigen
Hier mein Versuch, ich will immer erst den namen des komplexen Typen, und dann alle namen und typen der unterelemente (können mal nur 1 mal aber auch 100 sein). Was mach ich falsch? Wenn ich statt dem + hinter der Klammer (?. ...) ein +? setze kommt das erste Element. Beim + nur das zweite Element
Spoiler anzeigen
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]$sRead = '<xs:complexType name="SomeTypes">'&@CRLF & _
'<xs:sequence>'&@CRLF & _
'<xs:element name="SomeTag" type="SomeTagType"/>'&@CRLF & _
'<xs:element name="SomeService" type="xs:boolean"/>'&@CRLF & _
'</xs:sequence>'&@CRLF & _
'</xs:complexType>'&@CRLF
;~ $aRegEx = StringRegExp($sRead,'(?ms)<xs:complexType name="(.*?)">.*?(?:<xs:element name="(.*?)" type="(.*?)"/>[^<]+)+.*?<\/xs:complexType>',3)
$aRegEx = StringRegExp($sRead,'(?ms)<xs:complexType name="(.*?)">\r\n<xs:sequence>\r\n(?:<xs:element name="(.*?)" type="(.*?)"/>[^<]+)+<\/xs:sequence>\r\n<\/xs:complexType>',3)
ConsoleWrite(UBound($aRegEx) & @LF)
_ArrayDisplay($aRegEx)
Danke im Voraus
Gruß,
Spider