2013-04-05 43 views
0

我在使用Axis Properties導航XElements的類上。在這樣做的時候,我使用了import語句來導入xml名稱空間。我想使用相同的類來處理不同版本的xml文件,它們對名稱空間具有不同的URI,但具有相同的前綴。如何導入帶有多個URI的xml名稱空間

如果1.0版本則

imports <xmlns:name1="urn:company:name1:1.0"> 
imports <xmlns:name2="urn:company:name2:1.0"> 
imports <xmlns:gml="http://www.opengis.net/gml/3.2"> 

如果2.0版本則

imports xmlns:name1="urn:company:name1:2.0" 
imports <xmlns:name2="urn:company:name2:2.0"> 
imports <xmlns:gml="http://www.opengis.net/gml/3.2"> 


public class myObject 
    public Function GetElements(byval inXElement as XElement) as IEnumerable(of XElement) 
    dim IXElement = from myElement in inXElement...<name1:ElementName> select myElement 
    return IXElement 
    end function 
end class 

我相信這可以通過對每一個從基類繼承的版本不同的對象來完成,但所期待的這樣做會更快一些,並且需要更少的代碼重複。除了與前綴關聯的URI之外,子類的許多函數和子類將完全相同。因此,在基類中導入名稱空間將不起作用。如果我在子類中導入名稱空間,那麼我必須複製所有的函數和子類。

回答

0

我找不到一個解決方案來動態切換要導入的名稱空間,所以我重新設計了xml模式,並從所有「urn:company:name」命名空間中刪除了版本號。很明顯,這並不理想,因爲如果需要導入不同版本的命名空間,我不能控制gml/3.2 vs gml/3.3,情況可能(也可能會出現)。

相關問題