【发布时间】:2018-07-05 23:09:13
【问题描述】:
我正在尝试使用 XElement 创建以下 XML 字符串
<Issue xmlns="http://tempuri.org/">
<p>
<Nombre>no</Nombre>
<Descripcion>asdf</Descripcion>
</p>
</Issue>
我尝试了以下代码,但这种方法会在 p 元素中添加一个空的 xmlns 属性,这是我不想要的:
var ns = XNamespace.Get("http://tempuri.org/");
XElement e = new XElement(ns + "Issues",
new XElement("p", new XElement("Nombre", "nme"),
new XElement("Descripcion", "dsc")));
我怎样才能避免这个问题?
注意:
我不能像这样使用XElement.Parse,因为我需要动态构建我的soap请求正文:
var body = XElement.Parse("<Issue xmlns=\"http://tempuri.org/\"><p><Nombre>no</Nombre><Descripcion>asdf</Descripcion></p></Issue>");
我无法对 Web 服务引用执行此操作,因为存在来自 Xamarin 的引用时是否会出错。
目前我正在使用以下解决方法,但我猜这不是最好的解决方案:
var xdoc = new XmlDocument();
var xissue = xdoc.CreateElement("Issue");
var attr = xdoc.CreateAttribute("xmlns");
attr.Value = "http://tempuri.org/";
xissue.Attributes.Append(attr);
var xp = xdoc.CreateElement("p");
xissue.AppendChild(xp);
var xnombre = xdoc.CreateElement("Nombre");
xnombre.InnerText = "any value";
xp.AppendChild(xnombre);
var xdescription = xdoc.CreateElement("Descripcion");
xdescription.InnerText = "any value";
xp.AppendChild(xdescription);
var e = XElement.Parse(xissue.OuterXml);
【问题讨论】:
标签: c# soap linq-to-xml xelement