将具有节点前缀的 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);
这是我的 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);