Portál AbcLinuxu, 17. července 2025 06:56
Nevíte, jak ze souboru tohoto typu:
<option value="152">Abertamy</option> <option value="269">Adamov u Brna</option> <option value="479">Adolfovice</option> <option value="182">Adršpach</option> <option value="170">Albrechtice</option> <option value="271">Aš</option> <option value="293">Babylon</option> <option value="459">Bačetín</option> <option value="179">Bartošovice v Orlických horách</option> <option value="410">Batelov</option> <option value="155">Batňovice</option> <option value="233">Bečov nad Teplou</option> <option value="1">Bedřichov</option> <option value="349">Bechyně</option>
získat asi nejlépe pomocí nějakého rogulárního výrazu ty hodnoty value="xxx" a pak textové hodnoty jako např.: Abertamy, a udělal z nich řetězce jako
INSERT INTO #__tabulka SET id=152, name=Abertamy;
Za odpovědi předem děkuji.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text"/> <xsl:template match="option"> INSERT INTO #__tabulka SET id=<xsl:value-of select="@value"/>, name='<xsl:value-of select="."/>'; </xsl:template> </xsl:stylesheet>Pokud přidáte k datovému souboru instrukci pro zpracování, zobrazí vám výsledek i každý lepší webový prohlížeč.
<?xml version="1.0 ?> <?xml-stylesheet type="text/xml" href="template.xsl" ?> <data> <option value="152">Abertamy</option> … </data>
Benešov nad Černoutak aby se z toho stalo
Benešov nad Černou
<xsl:value-of select="."/>
použít
<xsl:value-of select="normalize-space(.)"/>případně
<xsl:value-of select="normalize-space(translate(.,' ',' '))"/>
Pattern p = Pattern.compile("<option value=\"([1-9][0-9]*)\">(.*?)</option>", Pattern.DOTALL); Matcher m = p.matcher(...data...); while(m.find()) System.println("INSERT INTO #__tablulka SET id=" + m.group(1) + ", name=" + m.group(2));ale osobně bych šel do té transformace :)
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.