如何使用带有两个名称空间的msbuild更新xml文件?
此msbuild below任务可以考虑一个名称空间,但如果我正在更新混合了名称空间的mxml(flex),我可以使用此任务或另一个msbuild任务进行更新吗如何使用带有两个名称空间的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
<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">