2010-11-27 38 views
0

使用XML在谷歌Apps腳本解析XML文檔中的元素: http://code.google.com/googleapps/appsscript/articles/XML_tutorial.html#HowItWorks解析XML包含結腸/命名空間

但是,這並不工作(解析失敗)如果在元素名稱冒號。 儘管它可能是命名空間,但它在整個XML文檔中都是單一的命名空間。

<aws:elementname>...</aws:elementname> 

這是一個問題只與谷歌的Xml或是通用的?

+0

從文檔中我瞭解到它的名稱空間感知。什麼是問題 - XML是否允許冒號除命名空間之外的元素名稱? – delnan 2010-11-27 21:06:21

+0

如果谷歌的Xml類是名稱空間感知,那麼它不應該有解析失敗。我採用了同樣的例子「培根甲骨文」,並添加了(每個元素前置的)aws:所有元素都失敗了。 – anjanesh 2010-11-27 21:13:32

回答

1

只要不發送參數爲真。

var oXML = Xml.parse(sXML, false); 
var root = oXML.getElement(); 
var topElement = root.getElements("http://namespace-uri","topElement"); 
var childElement = topElement[0].getElements("http://namespace-uri","childElement"); 
0

這絕對不是一個普遍問題。當然有XML處理命名空間的解析器。

我懷疑這是教程代碼的侷限性,而且google的庫實際上可以處理命名空間,但從查看API文檔來看,這有點臆測。

教程代碼使用像

var movies = doc.html.head.getElements("movie"); 

這似乎是一個非命名空間的版本調用。

這種方法有一個重載,它接受一個名稱空間URL,如果涉及到一個名稱空間,可能需要使用該名稱空間URL。

0

如果你想使用一些命名空間,你必須先聲明它。例如:

<root xmlns:aws="some-uri"> 
    <aws:elementname /> 
</root>