Avatar billede agentjna Nybegynder
15. marts 2012 - 16:49 Der er 4 kommentarer og
1 løsning

Avanceret søg og erstat i xml på baggrund af liste

Hej

Jeg har en problemstilling som jeg ønsker lidt hjælp til.

Har følgende xml struktur

<?xml version="1.0" encoding="UTF-8"?>
<Data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
    <xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
        <form1>
            <overskrift>
                <Basis>0</Basis>
                <DBIdent>2176</DBIdent>
                <DAILagnavn>besigtigelse_fl</DAILagnavn>
                <Udvidet>0</Udvidet>
            </overskrift>
        </form1>
    </xfa:data>
    <xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
        <form1>
            <overskrift>
                <Basis>0</Basis>
                <DBIdent>2175</DBIdent>
                <DAILagnavn>besigtigelse_fl</DAILagnavn>
                <Udvidet>0</Udvidet>
            </overskrift>
        </form1>
    </xfa:data>
    <xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
        <form1>
            <overskrift>
                <Basis>0</Basis>
                <DBIdent>2174</DBIdent>
                <DAILagnavn>besigtigelse_fl</DAILagnavn>
                <Udvidet>0</Udvidet>
            </overskrift>
        </form1>
    </xfa:data>
</Data>


Her ønsker jeg at ændre/udskifte alle værdierne i <DBIdent> tagget til værdierne fra nedenstående liste

2174  --> 731607   

2175  --> 732708   

2176  --> 732919   

Jeg skal have det automatiseret da jeg har rigtig mange værdier der skal ændres.


Output skal altså være:

<?xml version="1.0" encoding="UTF-8"?>
<Data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
    <xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
        <form1>
            <overskrift>
                <Basis>0</Basis>
                <DBIdent>732708</DBIdent>
                <DAILagnavn>besigtigelse_fl</DAILagnavn>
                <Udvidet>0</Udvidet>
            </overskrift>
        </form1>
    </xfa:data>
    <xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
        <form1>
            <overskrift>
                <Basis>0</Basis>
                <DBIdent>732708</DBIdent>
                <DAILagnavn>besigtigelse_fl</DAILagnavn>
                <Udvidet>0</Udvidet>
            </overskrift>
        </form1>
    </xfa:data>
    <xfa:data xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/">
        <form1>
            <overskrift>
                <Basis>0</Basis>
                <DBIdent>731607</DBIdent>
                <DAILagnavn>besigtigelse_fl</DAILagnavn>
                <Udvidet>0</Udvidet>
            </overskrift>
        </form1>
    </xfa:data>
</Data>


Jeg ved ikke om det kan laves i XSLT - hvis ikke vil jeg gerne have et hint til hvordan jeg får det løst - gerne lavpraktisk da jeg ikke kan programmere..
Avatar billede arne_v Ekspert
15. marts 2012 - 22:18 #1
En simpel soeg og erstat af <DBIdent>2175</DBIdent> med <DBIdent>732708</DBIdent> burde vaere nok.
Avatar billede agentjna Nybegynder
16. marts 2012 - 07:39 #2
Desværre er den xml jeg skal erstatte værdier i meget lang.  Det er blot et eksempel jeg har klippet ind. Så det er en rutine der søger dbident frem, finder den i den anden liste og erstatter med den anden værdi.
Avatar billede arne_v Ekspert
16. marts 2012 - 19:54 #3
En batch editor kan normalt rette ret store filer - er din fil over 500 MB?
Avatar billede agentjna Nybegynder
21. marts 2012 - 09:02 #4
Hej

Har fået en fyr til at skrive et lille program - som klarer det for mig.

Måtte give op med XSLT.

Hilsen
Jesper
Avatar billede jokkejensen Novice
22. marts 2012 - 19:32 #5
Det kunne være løst sådan her:

psuedo:

<template match=Data>
<Data>
<apply-template select=xfa:data />
</Data>
</template>

<template match="xfa:data">
<xfa:data>
<form1>
        <overskrift>
<xsl:copy-of select=//Basis />                <DBIdent>
<xsl:choose>
<xsl:when test="//DBIdent = 2174">
731607   
</xsl:when> 
<xsl:when test="//DBIdent = 2175">
732708   
</xsl:when>
<xsl:when test="//DBIdent = 2176">
732919   
</xsl:when>
</xsl:choose>
</DBIdent>
<xsl:copy-of select=//DAILagnavn />             
<xsl:copy-of select=//Udvidet />
          </overskrift>
        </form1>

</xfa:data>
</template>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester