XML Node mit mehreren Childs und NodeValues verschachteln



  • Hallo zusammen,

    ich brüte gerade über einem etwas kniffeligem XML (eigentlich ist das XML nicht wirklich komplex) mein Problem ist das es eine Kombination aus mehreren Elementen und Text Values ist.

    Das Ergebnis soll so aussehen.

    <a>
       <xsl:attribute name="href"><xsl:value-of select="$url_main"/>main.jsp?template=<xsl:value-of select="normalize-space(link)"/>&amp;lang=<xsl:value-of select="$lang"/>&amp;poid=<xsl:value-of select="$portal_id"/></xsl:attribute>
       <xsl:value-of select="name"></xsl:value-of>
    </a>
    

    Mir ist es im Moment nicht so ganz klar wie ich einem Node ein Child danach einen NodeValue dann wieder ein Child und wiederum einen NodeValue beibringen kann.

    Mein bisheriger Ansatz ist kurz dieser hier

    _di_IXMLNode NodeA = activeNode->AddChild("a", WideString(""));
     _di_IXMLNode Nodeb = NodeA->AddChild("xsl:attribute");
     Nodeb->Attributes[WideString("name")] = WideString("href");
     _di_IXMLNode Nodea = Nodeb->AddChild("xsl:value-of");
     Nodea->Attributes[WideString("select")] = WideString("$url_main");
    // Nodeb->SetNodeValue(WideString("main.jsp?template="));
    

    Die letzte Zeile verursacht ein Problem deswegen ist sie im Moment auskommentiert.

    Evtl. hat jemand schon mal ähnliches erfolgreicher gelöst als ich.

    Gruss

    Mirko



  • eigentlich hab ich davon keinen Plan 🙄, aber versuch mal folgendes:

    TXMLDocument *XML = new TXMLDocument("");
    
    ...
    
    _di_IXMLNode Nodeb = NodeA->AddChild("xsl:attribute", "");
    Nodeb->Attributes[WideString("name")] = WideString("href");
    
    _di_IXMLNode Nodea = Nodeb->AddChild("xsl:value-of", "");
    Nodea->Attributes[WideString("select")] = WideString("$url_main");
    
    _di_IXMLNode Nodec = XML->CreateNode(WideString("main.jsp?template="), ntText, "");
    Nodeb->ChildNodes->Add(Nodec);
    Nodea = Nodeb->AddChild("xsl:value-of", "");
    Nodea->Attributes[WideString("select")] = WideString("normalize-space(link)");
    
    Nodec = XML->CreateNode(WideString("&lang="), ntText, "");
    Nodeb->ChildNodes->Add(Nodec);
    Nodea = Nodeb->AddChild("xsl:value-of", "");
    Nodea->Attributes[WideString("select")] = WideString("$lang");
    
    Nodec = XML->CreateNode(WideString("&poid="), ntText, "");
    Nodeb->ChildNodes->Add(Nodec);
    Nodea = Nodeb->AddChild("xsl:value-of", "");
    Nodea->Attributes[WideString("select")] = WideString("$portal_id");
    
    ...
    

Anmelden zum Antworten