2010-08-16 148 views
1

在我正在開發的一個項目中,我剛完成爲我的XML編寫XSD,以便其他工程師可以更輕鬆地處理XML。隨着這個XSD來了XML命名空間。在我目前的解析代碼,我一直在使用這樣的事情:在命名空間中解析XElements的優雅解決方案

XElement element = xmlRoot.Element(XML.ELEMENT_NAME); 

隨着XML是一個完整的類是整個程序用於XML輸入和輸出的常量。但是,現在正在使用這些命名空間,這已經不再適用了。最明顯的,但幾乎沒有優雅的,解決辦法是進入並讓所有的解析代碼看起來像這樣的:

XElement element = xmlRoot.Element(XML.NAMESPACE + XML.ELEMENT_NAME); 

更多關於它的思考,它看起來好了很多,走下車,並定義一個擴展方法添加此名稱空間並返回XElement。這種想法會得到的代碼看起來像這樣:

XElement element = xmlRoot.GetMyElement(XML.ELEMENT_NAME); 

這些想法是什麼,我都拿出了迄今爲止對付命名空間的問題。 基本上,我的問題是這樣的:
是否有更好的方法來解析具有已知常量名稱空間的XElements?如果是這樣,那是什麼?

回答

2

那麼,沒有人提供了替代方案,我已經在代碼中實現了這一點。所以,我會繼續,並將其作爲答案,以便我可以將其解決。

我繼續前進,並使用自動添加到名稱空間中的擴展方法。請注意,這隻適用於你有一個常量命名空間!否則,您可能需要爲擴展方法添加另一個參數,以避免執行奇怪的命名空間連接。

 public static XElement 
     GetNamespaceElement(this XElement element, string ns, string name) 
     { 
      XNamespace n = new XNamespace(); 
      n.NamespaceName = ns; 
      return element.Element(n + name); 
     } 
相關問題