c# - 在调用 XElement.Remove() 之后,C#/Linq 能否将 XAttribute 添加到 XElement?

标签 c# linq actionscript-3 e4x

我目前正在将 chem4word 项目的部分内容从 C# 翻译成 AS3。

在下面的代码中,XElement DelegateElement 调用了它的 Remove() 方法。如果 mark == true 然后它传递那个 XElement 有一个 XAttribute "deleted"= "true" 但如果节点已被删除什么c#/Linq 真的可以吗?

        private XElement DelegateElement;

        public void DeleteSimple(bool mark)
        {
            if (IsDeleted())
            {
                Log.Debug("WARN: Trying to delete previously deleted CMLElement " + GetTag());
            }
            else
            {
                if (this.DelegateElement.Parent != null)
                {
                    ///////////////////////////////////////////
                    // Here, if the XElement is being removed,
                    // where does the MarkAsDeleted method add 
                    // the XAttribute?
                    ////////////////////////////////////////////
                    this.DelegateElement.Remove();
                    if (mark)
                    {
                        MarkAsDeleted(this.DelegateElement);
                    }
                }
            }
        }


        private void MarkAsDeleted(XElement delegateElement)
        {
            // Deleted = "deleted; True = "true" 
            delegateElement.Add(new XAttribute(Deleted, True));
        }

只是为了“好玩”,这里是代码的 as3 版本。按照上面的 c# 方式,删除的节点将不会获得添加到 xml 的新属性(或任何新信息)。

        private var DelegateElement:XML;
        public function DeleteSimple(mark:Boolean):void
        {
            if( IsDeleted() )
            {
                // log output
            }
            else
            {
                if( this.DelegateElement.parent() != null )
                {
                    delete this.DelegateElement.parent().children()[this.DelegateElement.childIndex()];
                    if( mark )
                    {
                        MarkAsDeleted(this.DelegateElement);
                    }
                }
            }
        }

        private function MarkAsDeleted(delegateElement:XML):void
        {
            delegateElement['@'+Deleted] = True;
        }

最佳答案

调用 Remove() 只是将元素从其父元素中拉出。
该元素本身将继续正常工作。

关于c# - 在调用 XElement.Remove() 之后,C#/Linq 能否将 XAttribute 添加到 XElement?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5011727/

相关文章:

xml - ActionScript 3.0 如何使用从 XML 加载的多个文件在 for 循环中创建 ProgressEvent 实例

linq - EF如何按日期过滤数据

android - AS3 - AIR 主机和 SWF 发送器之间的 LocalConnection

c# - 是否可以在两个 excel 工作表之间设置外键?

c# - 如何使用直线 API 将机器人集成到网站

c# - Linq 对象引用未设置为对象的实例 - 内部集合为空

c# - 带有子查询的表达式树

apache-flex - 如何在 Adob​​e FLEX 中创建 "Browse for folder"对话框?

c# - 屏幕分辨率和滚动条

C# Timer elapsed 在停止后仍然运行多一点