C# 如何更改xml中的根标记名称
我需要将xml根标记名从“string”更改为“TramaOutput”。如何做到这一点C# 如何更改xml中的根标记名称,c#,asp.net,xml,web-services,C#,Asp.net,Xml,Web Services,我需要将xml根标记名从“string”更改为“TramaOutput”。如何做到这一点 public string ToXml() { XElement element = new XElement("TramaOutput", new XElement("Artist", "bla"), new XElement("Title", "Foo")); return Convert.ToString(element
public string ToXml()
{
XElement element = new XElement("TramaOutput",
new XElement("Artist", "bla"),
new XElement("Title", "Foo"));
return Convert.ToString(element);
}
为此,输出为:
<string>
<TramaOutput>
<Artist>bla</Artist>
<Title>Foo</Title>
</TramaOutput>
</string>
布拉
福
在下面提到的代码中,我遇到了一个类似“不能在模式的顶层使用通配符”的错误
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用System.Web;
使用System.Web.Services;
使用System.Xml.Linq;
命名空间WebApplication1
{
///
///WebService 1的摘要说明
///
[WebService(命名空间=”http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
//要允许使用ASP.NET AJAX从脚本调用此Web服务,请取消注释以下行。
//[System.Web.Script.Services.ScriptService]
公共类WebService 1:System.Web.Services.WebService
{
[网络方法]
公共XElement getXl()
{
XElement元素=新XElement(“根”,新XElement(“BookId”,1),新XElement(“BookId”,2));
返回元素;
}
}
}
您的代码生成正确的xml,没有错误:
<TramaOutput>
<Artist>bla</Artist>
<Title>Foo</Title>
</TramaOutput>
如何解决你的问题?创建以下类:
public class TramaOutput
{
public string Artist { get; set; }
public string Title { get; set; }
}
并从web服务返回它的实例:
[WebMethod]
public TramaOutput GetArtist()
{
return new TramaOutput {Artist = "bla", Title = "foo"};
}
对象将序列化为您的xml:
<TramaOutput><Artist>bla</Artist><Title>foo</Title></TramaOutput>
将属性序列化为属性的:
<TramaOutput artist="bla"><Title>foo</Title></TramaOutput>
foo
您的代码生成正确的xml,没有错误:
<TramaOutput>
<Artist>bla</Artist>
<Title>Foo</Title>
</TramaOutput>
如何解决你的问题?创建以下类:
public class TramaOutput
{
public string Artist { get; set; }
public string Title { get; set; }
}
并从web服务返回它的实例:
[WebMethod]
public TramaOutput GetArtist()
{
return new TramaOutput {Artist = "bla", Title = "foo"};
}
对象将序列化为您的xml:
<TramaOutput><Artist>bla</Artist><Title>foo</Title></TramaOutput>
将属性序列化为属性的:
<TramaOutput artist="bla"><Title>foo</Title></TramaOutput>
foo
我在.net 4.5下检查了它
Convert.ToString(element);
element.ToString();
都回来了吗
<TramaOutput>
<Artist>bla</Artist>
<Title>Foo</Title>
</TramaOutput>
布拉
福
您现在使用的.NET版本和XML.Linq版本是什么?我在.NET 4.5下检查了这两个版本
Convert.ToString(element);
element.ToString();
都回来了吗
<TramaOutput>
<Artist>bla</Artist>
<Title>Foo</Title>
</TramaOutput>
布拉
福
您现在使用的.NET版本和XML.Linq版本是什么?您的错误在别处-此代码输出XML时没有
标记。如何保存xml?顺便说一句,XElement
不是IConvertable
或IFormattable
所以Convert.ToString(element)
内部只需调用element.ToString()。[0]:@lazyberezovsky这是webservice的回应xml@Vignesh使用属性Artist
和Title
创建类TramaOutput
。创建此类的实例并将其作为响应发送。对象将序列化为xml。当前您正在发送字符串,该字符串已序列化为xml。您的错误在别处-此代码输出的xml没有
标记。如何保存xml?顺便说一句,XElement
不是IConvertable
或IFormattable
所以Convert.ToString(element)
内部只需调用element.ToString()。[0]:@lazyberezovsky这是webservice的回应xml@Vignesh使用属性Artist
和Title
创建类TramaOutput
。创建此类的实例并将其作为响应发送。对象将序列化为xml。当前您正在发送字符串,该字符串被序列化为xml。因此,您的意思是返回Convert.ToString(元素)
创建
标记?@MichaelPerrenoud不,我的意思是发送字符串数据类型创建
标记。所以OP将数据发送给接收者的过程(更具体地说是发送的类型)就是问题所在。@lazyberezovsky我已经试过你的代码了,现在可以工作了,谢谢你的帮助。我还有一个查询,如果我想为xml标记使用属性,那么我需要做什么do@Vignesh您可以为此使用XmlAttribute属性。请参阅更新的答案和链接。您是否暗示返回Convert.ToString(元素)
创建
标记?@MichaelPerrenoud不,我的意思是发送字符串数据类型创建
标记。所以OP将数据发送给接收者的过程(更具体地说是发送的类型)就是问题所在。@lazyberezovsky我已经试过你的代码了,现在可以工作了,谢谢你的帮助。我还有一个查询,如果我想为xml标记使用属性,那么我需要做什么do@Vignesh您可以为此使用XmlAttribute属性。请参阅更新的答案和链接