2016-04-21 53 views
0

我有包含以下命名空间的XML空白命名空间:C#追加节点到现有的XML(包含)命名空间,但新的节点获得

<AUTOSAR xsi:schemaLocation="http://autosar.org/3.1.4 autosar_3-1-4.xsd" xmlns="http://autosar.org/3.1.4" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 

我写的代码追加节点特定水平XML文件,一切工作正常,但对于我第一次创建的节点,它添加了,例如:<功能名称值xmlns =“”>(粗体文本部分)。我希望该标签具有与XML中所有其他标签一样的名称空间,但这是在创建新节点时自动生成的额外部分。如何解决这个问题。 Ps:我没有在我的C#代码中声明任何命名空间。

这是XML的一部分,我想追加:

<FUNCTION-NAME-VALUE> 
    <DEFINITION-REF DEST="FUNCTION-NAME-DEF">/AUTOSAR/Com/ComConfig/ComSignal/ComInvalidNotification</DEFINITION-REF> 
    <VALUE>Rte_COMCbkInv_EPS_SteeringTorque</VALUE> 
</FUNCTION-NAME-VALUE> 

这是我面临的问题:

<FUNCTION-NAME-VALUE xmlns=""> 
    <DEFINITION-REF DEST="FUNCTION-NAME-DEF">/AUTOSAR/Com/ComConfig/ComSignal/ComInvalidNotification</DEFINITION-REF> 
    <VALUE>Rte_COMCbkInv_EPS_SteeringTorque</VALUE> 
</FUNCTION-NAME-VALUE> 

所有这些标签是我创造,只有第一个标签是xmlns:“”问题。

这是写入创建这些节点的C#代码:

if (funChilds[m].InnerText != "/AUTOSAR/Com/ComConfig/ComSignal/ComNotification") 
{ 
    XmlNode newNode = doc.CreateElement("FUNCTION-NAME-VALUE"); 
    XmlNode defNode_func = doc.CreateElement("DEFINITION-REF"); 
    XmlAttribute attr = doc.CreateAttribute("DEST"); 
    attr.Value = "FUNCTION-NAME-DEF"; 
    defNode_func.Attributes.SetNamedItem(attr); 
    defNode_func.InnerText = "/AUTOSAR/Com/ComConfig/ComSignal/ComInvalidNotification"; 
    XmlNode valNode_func = doc.CreateElement("VALUE"); 
    valNode_func.InnerText = (""); 
    newNode.AppendChild(defNode_func); 
    newNode.AppendChild(valNode_func); 
    def_ref[j].AppendChild(newNode); 
} 

请让我知道,要使其摆脱这一问题的必要的修改。

回答

0

固定!

如果为新创建的元素指定了命名空间,则可以解决空白命名空间的问题!

XmlNode defNode_func = doc.CreateElement("DEFINITION-REF", "NamespaceURI");