如何使用带有两个名称空间的msbuild更新xml文件?

如何使用带有两个名称空间的msbuild更新xml文件?,msbuild,flex4,Msbuild,Flex4,此msbuild below任务可以考虑一个名称空间,但如果我正在更新混合了名称空间的mxml(flex),我可以使用此任务或另一个msbuild任务进行更新吗 <XmlUpdate Prefix="fx" Namespace="http://ns.adobe.com/mxml/2009" XmlFileName="myFlexApp.mxml" Xpath="//mx:Application/fx:Declarations/fx:S

此msbuild below任务可以考虑一个名称空间,但如果我正在更新混合了名称空间的mxml(flex),我可以使用此任务或另一个msbuild任务进行更新吗

<XmlUpdate
        Prefix="fx"
        Namespace="http://ns.adobe.com/mxml/2009"
      XmlFileName="myFlexApp.mxml"
      Xpath="//mx:Application/fx:Declarations/fx:String[@id='stringId']"
      Value="xxxxx">

以下是我尝试更新的flex xml:

<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:mx="library://ns.adobe.com/flex/mx" 
            xmlns:s="library://ns.adobe.com/flex/spark">
<fx:Declarations>
    <fx:String id="stringId">UPDATE_ME</fx:String>
</fx:Declarations></mx:Application>

告诉我最新情况

您必须使用
XmlMassUpdate
任务。(此任务来自)


我能够成功地更新XmlUpdate的源代码,以便它使用多个名称空间:

            if (!string.IsNullOrEmpty(_prefix) && !string.IsNullOrEmpty(_namespace))
            {
                string[] prefixes = _prefix.Split(';');
                string[] namespaces = _namespace.Split(';');

                if (prefixes.Length != namespaces.Length)
                    throw new Exception("The number of prefixes is different from the number of namespaces");

                for (int prefixIndex = 0; prefixIndex < prefixes.Length; prefixIndex++)
                {
                    manager.AddNamespace(prefixes[prefixIndex], namespaces[prefixIndex]);                        
                }
            }
if(!string.IsNullOrEmpty(_前缀)和&!string.IsNullOrEmpty(_命名空间))
{
字符串[]前缀=_prefix.Split(“;”);
字符串[]名称空间=_namespace.Split(“;”);
if(prefixes.Length!=名称空间.Length)
抛出新异常(“前缀的数量不同于名称空间的数量”);
对于(int prefixIndex=0;prefixIndex
这适用于以下示例:

<XmlUpdate
    Prefix="fx;mx"
    Namespace="http://ns.adobe.com/mxml/2009;library://ns.adobe.com/flex/mx"
  XmlFileName="myFlexApp.mxml"
  Xpath="//mx:Application/fx:Declarations/fx:String[@id='stringId']"
  Value="xxxxx">

我无法让textnode('CHANGE')执行此操作。我可以使用xmlmassupdate将xmlnode放在(ie)中,但不能将其放在textnode中。
            if (!string.IsNullOrEmpty(_prefix) && !string.IsNullOrEmpty(_namespace))
            {
                string[] prefixes = _prefix.Split(';');
                string[] namespaces = _namespace.Split(';');

                if (prefixes.Length != namespaces.Length)
                    throw new Exception("The number of prefixes is different from the number of namespaces");

                for (int prefixIndex = 0; prefixIndex < prefixes.Length; prefixIndex++)
                {
                    manager.AddNamespace(prefixes[prefixIndex], namespaces[prefixIndex]);                        
                }
            }
<XmlUpdate
    Prefix="fx;mx"
    Namespace="http://ns.adobe.com/mxml/2009;library://ns.adobe.com/flex/mx"
  XmlFileName="myFlexApp.mxml"
  Xpath="//mx:Application/fx:Declarations/fx:String[@id='stringId']"
  Value="xxxxx">