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

本文关键字:命名空间 节点 新节点 空白 包含 追加 XML | 更新日期: 2024-10-25 06:07:21

我有一个包含以下命名空间的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);
}

请让我知道为摆脱此问题而要进行的必要更改。

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

已修复!

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

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