我目前正在将 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/