将具有节点前缀的 Xml 字符串转换为 XElement

Convert Xml String with node prefixes to XElement

这是我的 xml 字符串

 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 的最快/最短方法是什么?

我发现上面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 移动到 'From' 元素中。

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);