簡體   English   中英

向AS3中特定位置的XML節點添加屬性

[英]add attribute to a XML node at a specific position in AS3

我有這個XML:

var myNode:XML = <node attribute="123"/>

我知道如何向節點添加屬性:

myNode.@otherAttribute = "abc";

但這會將屬性添加到末尾。 如果我要將其添加為第一個屬性怎么辦? 我想擁有 :

<node otherAttribute="abc" attribute="123"/>

我知道可以通過insertChildAfter()insertChildBefore()將子節點添加到特定位置,但是我不知道該屬性是否可行。

如果順序很重要,那么您應該使用元素而不是屬性。 XML建議指出屬性順序“不重要”(請參閱第3.1節 )。

請注意,開始標簽或空元素標簽中屬性規范的順序並不重要。

另一方面,元素在其父級中確實具有指定的序數位置。

但是,如果我不得不猜測一個解決方法,我會說刪除所有屬性,然后按照您想要的順序讀取它們可能會起作用。 但話又說回來,它們也可能以字母順序發出,或者甚至是其他一些看似隨意的順序發出。 它的行為充其量是不確定的,並且在將來的API實現中可能會發生變化。

即使您可以在ActionScript中做到這一點,並通過任何其他XML工具(例如XSLT)運行它,也不能保證它們將遵守屬性順序。

正確的答案是“不要那樣做”。

另請參閱此問題以獲取類似的參考點。

從這個問題的答案借款,如果您正在使用的文檔處理,其中屬性順序相關的,那么你就沒有使用XML -只是一些表面上看起來像XML。 因此,您可能應該使用基於XML的工具/庫來處理或生成該文檔。

我們有同樣的問題。 關鍵是使用XML,而不是XMLNodes,並使用xml。@ attributeName添加所有屬性。 (我已經剪切並重寫了代碼,因此可以在此處發布,但是原始版本肯定可以正常工作)

var xml : XML = <Control/>;

xml.@name = pButton.aGetSkinName();
xml.@x = pButton.aGetSkinPosition().x;
xml.@y = pButton.aGetSkinPosition().y;          
xml.@text = pButton.textField ? pButton.textField.text : "";
[...]
xml.@enabled = pButton.enabled;
trace(xml)

並跟蹤:

<Control name="fullscreenButtonSkin" x="428" y="12" text="" [...] enabled="true"/>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM