none
xml 插入条目时自动添加 xmlns 这个属性 RRS feed

  • 问题

  •                 if (GVLocation != null)
                    {
                        XElement InsFile = new XElement("Object", _GVFileName);
                        //XNamespace xname = @"http://br-automation.co.at/AS/Package";
                        InsFile.RemoveAttributes();
                        InsFile.SetAttributeValue("Type", "File");
                        InsFile.SetAttributeValue("Description", "From Outside Import");
                        GVLocation.AddAfterSelf(InsFile);
                        Package.Save(Path);
                    }
    //GVLocation  是  .SingleOrDefault();
    <?xml version="1.0" encoding="utf-8"?>
    <?AutomationStudio Version=4.6.2.116?>
    <Package Version="1.00.0" xmlns="http://br-automation.co.at/AS/Package">
      <Objects>
        <Object Type="Package">DOC</Object>
        <Object Type="File" Description="Global data types">Global.typ</Object>
        <Object Type="File" Description="Global variables">Global.var</Object>
        <Object Type="File" Description="From Outside Import" xmlns="">DisModuleInstance.var</Object>
        <Object Type="Package" Description="Global libraries">Libraries</Object>
        <Object Type="DataObject" Language="Ett" Description="轴报警文件">acp10etxen</Object>
        <Object Type="Package" Description="后钩轴">Hook</Object>
        <Object Type="Package">RecipeCtrl</Object>
        <Object>IPset</Object>
        <Object>HwFilePreprocessing</Object>
      </Objects>
    </Package>

    其中第8行 是我插入的语句,但是不知道为什么会出现 xmlns 这个属性。

    <Object Type="File" Description="From Outside Import" xmlns="">DisModuleInstance.var</Object>


    想插入条目时,不带 xmlns 这个 属性,但是我不知道应该怎么弄~~~


    2019年10月24日 10:02

答案

  • 不可以的,Remove是不可以的~

    我尝试过~

    这个是文件保存时自动添加的 xmlns 这个 Attribute

    但是我找到了原因,需要实现声明命名空间就OK的,其中 GVLocation 是 .SingleOrDefault(),寻找的目标位置。

    关键是下面这句话,创建 element 的时候,要附加其所在的命名空间,这样就不会出现 xmlns 这个 属性了。源码在最后面。

    XElement InsFile = new XElement(xmlns + "Object", _GVFileName);

    if (GVLocation != null)
                    {
                        XNamespace xmlns = @"http://br-automation.co.at/AS/Package";
                        //添加 xmlnamespace
                        XElement InsFile = new XElement(xmlns + "Object", _GVFileName);
                        InsFile.RemoveAttributes();
                        InsFile.SetAttributeValue("Type", "File");
                        InsFile.SetAttributeValue("Description", "From Outside Import");
                        GVLocation.AddAfterSelf(InsFile);
                        Package.Save(Path);
                    }

    • 已标记为答案 Heseri_Kang 2019年10月25日 7:31
    2019年10月25日 7:31

全部回复

  • Hi Heseri_Kang,

    你可以尝试参考下面这个链接中的方法:

    How to remove xmlns attribute of a node other than root in an XDocument?

    Regards,

    Kyle


    如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。

    2019年10月25日 1:42
  • 不可以的,Remove是不可以的~

    我尝试过~

    这个是文件保存时自动添加的 xmlns 这个 Attribute

    但是我找到了原因,需要实现声明命名空间就OK的,其中 GVLocation 是 .SingleOrDefault(),寻找的目标位置。

    关键是下面这句话,创建 element 的时候,要附加其所在的命名空间,这样就不会出现 xmlns 这个 属性了。源码在最后面。

    XElement InsFile = new XElement(xmlns + "Object", _GVFileName);

    if (GVLocation != null)
                    {
                        XNamespace xmlns = @"http://br-automation.co.at/AS/Package";
                        //添加 xmlnamespace
                        XElement InsFile = new XElement(xmlns + "Object", _GVFileName);
                        InsFile.RemoveAttributes();
                        InsFile.SetAttributeValue("Type", "File");
                        InsFile.SetAttributeValue("Description", "From Outside Import");
                        GVLocation.AddAfterSelf(InsFile);
                        Package.Save(Path);
                    }

    • 已标记为答案 Heseri_Kang 2019年10月25日 7:31
    2019年10月25日 7:31