将带节点前缀的Xml String转换为XElement

时间:2017-04-06 12:45:47

标签: xml-parsing xelement

这是我的xml字符串

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

我想将它加载到XElement中,但是由于'a'前缀,执行XElement.Parse(fromHeader)会给我一个错误。我尝试了以下方法:

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的最快/最短的方式?

1 个答案:

答案 0 :(得分:0)

我发现以上4行相当于

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

OR ALTERNATIVELY在解析之前将NS移动到'From'元素。

{{1}}