访问Webservice时,我直接返回的对象.没有设置返回值类型,自动被转换为xml格式.不知道是不是内置的就是xml格式;
我现在想给又对象自动转换来的xml元素设置属性;请教各路高人应该怎么做?
[Serializable]
public class ErrorMsg
{
public ErrorMsg()
{
this.ErrNo = 0;
this.errMsg = "";
}
public ErrorMsg(int ErrNo, string errMsg)
{
this.ErrNo = ErrNo;
this.errMsg = errMsg;
}
private int errNo;
/// <summary>
/// 0 正常,1 业务逻辑错误,3程序错误
/// </summary>
public int ErrNo
{
get { return errNo; }
set { errNo = value; }
}
private string errMsg;
public string Errmsg
{
get { return errMsg; }
set { errMsg = value; }
}
}
上面是返回的对象;我在方法中return ErrorMsg 后,自动转成xml.如下:
<ErrorMsg xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.wxsky.cc/">
<ErrNo>1</ErrNo>
<Errmsg>非法的手机号,请输入11位数字</Errmsg>
</ErrorMsg>
我现在想给返回的xml元素加属性,比如
<ErrNo name="错误码">1</ErrNo>应该怎么做?
------解决方案--------------------
这与WS返回什么都没有关系了。只是返回后,你程序里对XML的操作。
------解决方案--------------------
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Xml;
private XmlDocument xmlDoc;
//load xml file
private void LoadXml()
{
xmlDoc=new XmlDocument();
xmlDoc.Load(Server.MapPath("User.xml"));
}
//添加节点
private void AddElement()
{
LoadXml();
XmlNode xmldocSelect=xmlDoc.SelectSingleNode("user");
XmlElement el=xmlDoc.CreateElement("person");
//添加person节点
el.SetAttribute("name","风云");
//添加person节点的属性"name"
el.SetAttribute("sex","女");
//添加person节点的属性 "sex"
el.SetAttribute("age","25");
//添加person节点的属性 "age"
XmlElement xesub1=xmlDoc.CreateElement("pass");
//添加person节点的里的节点
xesub1.InnerText="123";
//设置文本节点
el.AppendChild(xesub1);
XmlElement xesub2=xmlDoc.CreateElement("Address");
xesub2.InnerText="昆明";
//设置文本节点
el.AppendChild(xesub2); xmldocSelect.AppendChild(el); xmlDoc.Save(Server.MapPath("user.xml"));
}
//修改节点
private void UpdateElement()
{
LoadXml();
XmlNodeList nodeList=xmlDoc.SelectSingleNode("user").ChildNodes;
//获取bookstore节点的所有子节点
foreach(XmlNode xn in nodeList)
//遍历所有子节点
{
XmlElement xe=(XmlElement)xn;
//将子节点类型转换为XmlElement类型
if(xe.GetAttribute("name")=="风云")
//如果name属性值为“风云”
{
xe.SetAttribute("name","发明");
//如果下面有子节点在下走
XmlNodeList nls=xe.ChildNodes;
//继续获取xe子节点的所有子节点
foreach(XmlNode xn1 in nls)
//遍历
{
XmlElement xe2=(XmlElement)xn1;
//转换类型
if(xe2.Name=="pass")
//如果找到
{
xe2.InnerText="66666";
//则修改
break;
}
}
break;
}
}
xmlDoc.Save(Server.MapPath("user.xml"));
//保存
}
//删出节点
private void deleteNode()
{
LoadXml();
XmlNodeList xnl=xmlDoc.SelectSingleNode("user").ChildNodes;