2017-04-06 44 views
0

這是我的XML字符串轉換XML字符串來的XElement

string fromHeader= "<a:From><a:Address>http://ex1.example.org/</a:Address></a:From>"; 

我想把它加載到的XElement,但這樣做XElement.Parse(fromHeader)給我一個錯誤,由於「A」前綴。我試過以下內容:

XNamespace xNSa = "http://www.w3.org/2005/08/addressing"; 
string dummyRoot = "<root xmlns:a=\"{0}\">{1}</root>"; 
var fromXmlStr = string.Format(dummyRoot, xNSa, fromHeader); 
XElement xFrom = XElement.Parse(fromXmlStr).Elements().First(); 

哪個工作,但認真,我需要4行代碼來做到這一點!什麼是讓我的XElement最快/最短的方式?

回答

0

我發現了上述4行相當於

XNamespace xNSa = "http://www.w3.org/2005/08/addressing"; 
XElement xFrom = new XElement(xNSa + "From", new XElement(xNSa + "Address", "http://ex1.example.org/")); 

或可替代地之前解析移動NS到「從」元件。

var fromStr = "<a:From xmlns:a=\"http://www.w3.org/2005/08/addressing\"><a:Address>http://ex1.example.org/</a:Address></a:From>"; 
XElement xFrom = XElement.Parse(fromStr);