XDocument Salvar Removendo Prefixos de Nó
Eu tenho um documento XML (caseiro) que possui uma estrutura como a seguinte:
<?xml version="1.0" encoding="utf-8"?>
<wf:wf version="1.0a" xmlns:wf="http://example.com/workflow" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://example.com/workflow">
<wf:assemblies />
<wf:dataDefinitions />
<wf:processes />
<wf:workflows>
<wf:workflow id="g08615517-cdfd-4091-a053-217a965f7118">
<wf:arguments />
<wf:variables>
<wf:variable id="g39ffecc9-f570-41c1-9ee0-b9358d63da3c" parameterType="Hidden">
<wf:name>UIPTaskId</wf:name>
<wf:dataDefinitionId>gc8f3715c-4a82-42d2-916c-51515083e7e5</wf:dataDefinitionId>
</wf:variable>
<wf:variable id="g46663a0c-7e60-4bd2-80df-16cd544087ad" parameterType="Hidden">
<wf:name>UIPTaskName</wf:name>
<wf:dataDefinitionId>g359FC555-9CC7-47D4-8ED3-EF973E7D74D7</wf:dataDefinitionId>
<wf:value>Responsible Individual</wf:value>
</wf:variable>
<wf:variable id="gb32914d5-6761-4e82-b571-c8944a796fd9" parameterType="Hidden">
<wf:name>Search?</wf:name>
<wf:dataDefinitionId>g57201da8-62b4-46f2-9329-c71d86f39ffc</wf:dataDefinitionId>
<wf:value>True</wf:value>
</wf:variable>
</wf:variables>
</wf:workflow>
</wf:workflows>
</wf:wf>
Eu tenho um utilitário para limpar os documentos XML e estou usando o XDocument para carregar o arquivo e depois percorrer determinados nós e substituir valores. Depois de concluído, estou chamando o método Save para salvar o arquivo em um novo local e, após uma inspeção mais aprofundada, o método Save está removendo meu prefixo wf em cada nó. Como posso preservar isso? Estou fazendo algo errado? Aqui está um exemplo do meu código:
string wf = "wf";
string wkfl = "C:\\MyFiles\\Temp\\myfile1.rrr";
XDocument xdoc = XDocument.Load(wkfl);
XElement variables= xdoc.Descendents(wf + "variables").Single();
foreach(XElement variable in variables.Elements(wf + "variable"))
{
XElement name = variable.Element(wf + "name");
name.Value = name.Value + "_MODIFIED";
}
xdoc.Save(wkfl.Replace("\\Temp\\", "\\Modified\\"));
O método Save produz o seguinte XML:
<?xml version="1.0" encoding="utf-8"?>
<wf version="1.0a" xmlns:wf="http://example.com/workflow" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://example.com/workflow">
<assemblies />
<dataDefinitions />
<processes />
<workflows>
<workflow id="g08615517-cdfd-4091-a053-217a965f7118">
<arguments />
<variables>
<variable id="g39ffecc9-f570-41c1-9ee0-b9358d63da3c" parameterType="Hidden">
<name>UIPTaskId</name>
<dataDefinitionId>gc8f3715c-4a82-42d2-916c-51515083e7e5</dataDefinitionId>
</variable>
<variable id="g46663a0c-7e60-4bd2-80df-16cd544087ad" parameterType="Hidden">
<name>UIPTaskName</name>
<dataDefinitionId>g359FC555-9CC7-47D4-8ED3-EF973E7D74D7</dataDefinitionId>
<value>Responsible Individual</value>
</variable>
<variable id="gb32914d5-6761-4e82-b571-c8944a796fd9" parameterType="Hidden">
<name>Search?</name>
<dataDefinitionId>g57201da8-62b4-46f2-9329-c71d86f39ffc</dataDefinitionId>
<value>True</value>
</variable>
</variables>
</workflow>
</workflows>
</wf>