2014-07-07 3 views
0

J'essaie de mettre à jour le nœud XML et, bien qu'il ne génère pas d'erreur, il ne met pas à jour la valeur.XML Remplacer la valeur du nœud

xml

<ParameterValues> 
    <ParameterValue> 
    <Name>TO</Name> 
    <Value>[email protected]</Value> 
    </ParameterValue> 
    <ParameterValue> 
    <Name>IncludeReport</Name> 
    <Value>True</Value> 
    </ParameterValue> 
    <ParameterValue> 
    <Name>RenderFormat</Name> 
    <Value>MHTML</Value> 
    </ParameterValue> 
    <ParameterValue> 
    <Name>Subject</Name> 
    <Value>@ReportName was executed at @ExecutionTime</Value> 
    </ParameterValue> 
    <ParameterValue> 
    <Name>IncludeLink</Name> 
    <Value>True</Value> 
    </ParameterValue> 
    <ParameterValue> 
    <Name>Priority</Name> 
    <Value>NORMAL</Value> 
    </ParameterValue> 
</ParameterValues> 

La chaîne de mise à jour.

  1. (C'est ce que Im Tring changer - <Value>[email protected]</Value>)

    set @ input.modify («remplacer la valeur de (/ ParameterValues ​​/ ParameterValue/Nom/Valeur/texte()) [1] avec « [email protected] » ')

Si je change la chaîne de mettre à jour le nœud Nom il met à jour avec « [email protected] »?

1. <Name>TO</Name>

set @ input.modify ('remplacer la valeur de (/ ParameterValues ​​/ ParameterValue/Nom/texte()) [1] avec "[email protected]"')

Exemple de résultat

<ParameterValues> 
    <ParameterValue> 
    <Name>[email protected]</Name> 
    <Value>[email protected]</Value> 
    </ParameterValue> 
+0

Qu'avez-vous essayé exactement? A quoi sert la langue ou l'outil 'set'? – Unihedron

+0

Désolé oublié de mentionner où je faisais cela. TSQL. Ce que j'ai essayé est: - set @ input.modify ('remplace la valeur de (/ ParameterValues ​​/ ParameterValue/Name/Value/text()) [1] avec "[email protected]"') – user3810822

+0

S'il vous plaît ajoutez 'TSQL' à vos balises de questions afin que les experts de ce domaine puissent vous aider à la place. xP – Unihedron

Répondre

1

tout ce que vous voulez mettre à jour est monsieur ... essayez d'utiliser cette

$doc = new DOMDocument(); 
$doc->load(xml file name); 

$doc->formatOutput = true; 
$doc->getElementsByTagName("Value")->item(0)->nodeValue = $TheNewValue; 
$doc->save("pathwheroverwritethefile"); 

je voudrais pouvoir aider .... je pense que la valeur de tableau sur l'article est l'erreur ...

0

Vous avez un noeud supplémentaire Name spécifié dans votre instruction de mise à jour. Essayez à la place de remplacer la valeur du premier nœud ParameterValue.

replace value of (/ParameterValues/ParameterValue/Value/text())[1] 
        with "[email protected]" 

Si vous voulez vous assurer que vous ne remplacez que la valeur du ParameterValueName est TO vous devez utiliser un prédicat sur le nœud ParameterValue.

replace value of (/ParameterValues/ParameterValue[Name = "TO"]/Value/text())[1] 
        with "[email protected]"') 
+0

Merci. Je nouveau c'était simple mais ne pouvait pas voir les arbres pour la forrest. – user3810822

Questions connexes