EDITx2:下面的問題似乎是由於我的XML模式相關的屬性導致的,我主要使用這個屬性,所以我可以在FB 4.7中驗證我的XML,並且不是真的一旦將XML嵌入到應用程序本身中,就需要它。在AS3中嵌入帶有關聯XSD的XML文件的問題
創建一個與我的XML文檔相同但省略xmlns,xmlns:xsi和xsi:schemalocation屬性的XML對象會生成可正確導航的AS中的XML對象。包括它們不僅會導致下面的問題,而且還會導致xmlns和xmlns:xsi屬性被帶到樹中,使得原始XML對象的基於XMLList的子集同樣難以解析。下面的代碼示例已更新以顯示該現象。
現在的問題是:當我以某種方式嵌入XML時,是否可以去除與模式相關的屬性,或者使其更適合於AS?
編輯:我遇到的問題似乎是特別與嵌入式XML文檔有關;直接在AS3中創建的XML變量可以正常運行。
我在AS3有一個看似無意義的問題。讓我們假設一個XML文檔名爲的example.xml,看起來像這樣:
<?xml version="1.0" encoding="UTF-8"?>
<myParent xmlns="http://www.example.com/Schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.com/Schema Schema.xsd">
<myChild id="1">
<myGrandchild cid="1" />
<myGrandchild cid="2" />
</myChild>
<myChild id="2">
<myGrandchild cid="3" />
</myChild>
</myParent>
然後我試着通過嵌入,這樣將其分配到一個靜態常量(以便其原生類外訪問)在AS3:
[Embed(source="example.xml", mimeType="application/octet-stream")]
private static const exampleXML:Class;
public static const myXML:XML = XML(new exampleXML);
然後我想用XMLList從中提取元素/節點。這是我遇到的問題。這裏有兩個例子是工作,我想指望他們,接着是三個不:
// #1
var myList:XMLList = myXML.*;
trace(myList);
/*
<myChild id="1" xmlns="http://www.example.com/Schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<myGrandchild cid="1" />
<myGrandchild cid="2" />
</myChild>
<myChild id="2" xmlns="http://www.example.com/Schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<myGrandchild cid="3" />
</myChild>
*/
// #2
var myList:XMLList = myXML.*.(@id==1);
trace(myList);
/*
<myChild id="1" xmlns="http://www.example.com/Schema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<myGrandchild cid="1" />
<myGrandchild cid="2" />
</myChild>
*/
// #3
var myList:XMLList = myXML.myChild;
trace(myList);
/*
(Outputs nothing at all)
*/
// #4
var myList:XML = myXML.myChild[0];
trace(myList);
/*
null
*/
// #5
var myList:XMLList = myXML.child("myChild");
trace(myList);
/*
(Outputs nothing at all)
*/
從理論上講,#3,#5應該給予相同的輸出#1和#4應該給相同的輸出到#2。爲什麼3-5出現空白?將myXML聲明爲靜態或常量有問題嗎?我究竟做錯了什麼?
顯然,我在這裏使用了非常通用的示例。我正在使用的實際XML綁定到XSD模式;如果這可能對我的問題有任何可能的影響,讓我知道,我會發布我的實際代碼。
它[適用於我](http://wonderfl.net/c/apuN).... –
此外,id屬性在文檔中應該是唯一的。見[here](http://www.w3.org/TR/xml-id/) –
已編輯;看起來像是特定於嵌入式文檔。我正在使用一個非常通用的示例;如果需要,我將發佈的原始文檔沒有任何重複的屬性。 – eclecto