2016-04-21 58 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");