2
我目前正在將部分chem4word項目從C#翻譯成AS3。XElement.Remove()被調用後,C#/ Linq是否可以將XAttribute添加到XElement?
在下面的代碼中,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;
}
真棒,我只是沒有想到,雖然塞納里奧完全。測試它在as3中,看起來像你說的那樣工作。謝謝一堆! – gltovar 2011-02-16 02:01:33