1

参考例

var x1:XML = <x1>
                <a id = "52">AYY</a>
                <a>AYY 2 </a>
                <b>BEE</b>
                <c>CEE</c>
            </x1>;

trace(x1.toXMLString());
trace("___________");

delete x1.a.@id;

trace(x1.toXMLString());
trace("___________");

delete x1.b;

trace(x1.toXMLString());
trace("___________");

delete x1.a;

trace(x1.toXMLString());

出力

<x1>
  <a id="52">AYY</a>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>
___________
<x1>
  <a>AYY</a>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>
___________
<x1>
  <a>AYY</a>
  <a>AYY 2</a>
  <c>CEE</c>
</x1>
___________
<x1>
  <c>CEE</c>
</x1>

要素を 1 つだけ削除したい場合はどうすればよいですか? または、子要素であり、子要素を持たない要素を削除したいですか?

delete x1.a しか使用できません。ばかげている!私は何時間も費やしましたが、簡単な方法が見つかりませんでした。

var list:XMLList = x1.elements('a');
for each(var x:XML in list){
    if(....){
        //make something done
        //i want to delete this x from the xml object.while keep other node untouched.
    }
}

この問題の対処法を教えてください。

4

2 に答える 2

2

完全な E4X 構文を使用して、ツリー内のノードを照合し、それらを削除できます。たとえば、次のようになります。

var x1:XML =
    <x1>
        <a id="52">AYY</a>
        <a>AYY 2</a>
        <b>BEE</b>
        <c>CEE</c>
    </x1>;

trace(x1.toXMLString());

delete x1.a.(hasOwnProperty('@id') && @id=='52')[0];

trace('---');
trace(x1.toXMLString());

出力:

<x1>
  <a id="52">AYY</a>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>
---
<x1>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>
于 2012-10-27T15:02:02.857 に答える
2

その簡単な...見てみましょう:

var x1:XML = <x1>
                 <a id = "52">AYY</a>
                 <a>AYY 2 </a>
                 <b>BEE</b>
                 <c>CEE</c>
             </x1>;

trace(x1.toXMLString() + "\n");

var nodesToDelete:XMLList = x1.a;

trace(nodesToDelete.toXMLString() + "\n");

delete nodesToDelete[0];

trace(x1.toXMLString() + "\n");

出力:

<x1>
  <a id="52">AYY</a>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>

<a id="52">AYY</a>
<a>AYY 2</a>

<x1>
  <a>AYY 2</a>
  <b>BEE</b>
  <c>CEE</c>
</x1>

そして、これを行うこともできます:

delete x1.a[0];
于 2012-10-27T15:05:03.603 に答える