本人第一次发帖 请大家多多见谅我出现了个难题 请高手帮我指点一下
逻辑:注册 同时插入一条数据(用户相关信息)到两个数据库中 具体实现,地址栏传参 生成XML文件 调用值进行判断
下面是XML生成的内容
Response.Write("<?xml version='1.0' encoding='utf-8' ?>");
Response.Write("<gameConfig>");
Response.Write("<stateid>0</stateid>"); // 注册成功为0
Response.Write("</gameConfig>");
表示注册成功
现在要读取stateid节点的值
方法:
GameUserAPIPath = "../api/game/GameUser.aspx";
GameUserAPIPath += "?username=" + UserName + "&password=" + John.Game.Encode.Encode32(pwd, 32) + "&FaceID=" + Request.For["UserFace"].ToString() + "&Recommender=" + RecommenderID + "&tag=reg";//链接地址+参数
stateid = John.Game.XmlControl.GetXMLValue("stateid", GameUserAPIPath);//调用方法读取stateid节点的值下面是读取XML方法
/// <summary>
/// 读取XML配置文件
/// </summary>
/// <param name="Target">XML节点名称</param>
/// <param name="ConfigPathName">XML文件地址</param>
/// <returns></returns>
public static string GetXMLValue(string Target, string XmlPath)
{
string path = GetWebUrl() + XmlPath;
DataSet ds = new DataSet();
// path = StripHTML(path); ds.ReadXml(path);
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0][0].ToString();
}
else
{
return string.Empty;
}
} ///// 除去所有在HTML元素中标记
//public static string StripHTML(string strHtml)
//{
// string strOutput = strHtml;
// Regex regex = new Regex(@"<[^>]+>|</[^>]+>");
// strOutput = regex.Replace(strOutput, "");
// return strOutput; //} //返回一个完整路径
public static string GetWebUrl()
{
string allUrl = HttpContext.Current.Request.Url.ToString();
int pos = allUrl.LastIndexOf('/');
return allUrl.Substring(0, pos + 1);
}
//这是错误
System.Xml.XmlException: 缺少根元素。
在 System.Xml.XmlTextReaderImpl.Throw(Exception e)
在 System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)
在 System.Xml.XmlTextReaderImpl.ParseDocumentContent()
在 System.Xml.XmlTextReaderImpl.Read()
在 System.Xml.XmlTextReader.Read()
在 System.Xml.XmlReader.MoveToContent()
在 System.Data.DataSet.ReadXml(XmlReader reader, Boolean denyResolving)
在 System.Data.DataSet.ReadXml(String fileName)
在 John.Game.XmlControl.GetXMLValue(String Target, String XmlPath)请各位高人帮忙指点下 小弟是在无能为力 再此谢过 第一次发帖 不懂的规矩比较多 我会慢慢熟悉!
逻辑:注册 同时插入一条数据(用户相关信息)到两个数据库中 具体实现,地址栏传参 生成XML文件 调用值进行判断
下面是XML生成的内容
Response.Write("<?xml version='1.0' encoding='utf-8' ?>");
Response.Write("<gameConfig>");
Response.Write("<stateid>0</stateid>"); // 注册成功为0
Response.Write("</gameConfig>");
表示注册成功
现在要读取stateid节点的值
方法:
GameUserAPIPath = "../api/game/GameUser.aspx";
GameUserAPIPath += "?username=" + UserName + "&password=" + John.Game.Encode.Encode32(pwd, 32) + "&FaceID=" + Request.For["UserFace"].ToString() + "&Recommender=" + RecommenderID + "&tag=reg";//链接地址+参数
stateid = John.Game.XmlControl.GetXMLValue("stateid", GameUserAPIPath);//调用方法读取stateid节点的值下面是读取XML方法
/// <summary>
/// 读取XML配置文件
/// </summary>
/// <param name="Target">XML节点名称</param>
/// <param name="ConfigPathName">XML文件地址</param>
/// <returns></returns>
public static string GetXMLValue(string Target, string XmlPath)
{
string path = GetWebUrl() + XmlPath;
DataSet ds = new DataSet();
// path = StripHTML(path); ds.ReadXml(path);
if (ds.Tables[0].Rows.Count > 0)
{
return ds.Tables[0].Rows[0][0].ToString();
}
else
{
return string.Empty;
}
} ///// 除去所有在HTML元素中标记
//public static string StripHTML(string strHtml)
//{
// string strOutput = strHtml;
// Regex regex = new Regex(@"<[^>]+>|</[^>]+>");
// strOutput = regex.Replace(strOutput, "");
// return strOutput; //} //返回一个完整路径
public static string GetWebUrl()
{
string allUrl = HttpContext.Current.Request.Url.ToString();
int pos = allUrl.LastIndexOf('/');
return allUrl.Substring(0, pos + 1);
}
//这是错误
System.Xml.XmlException: 缺少根元素。
在 System.Xml.XmlTextReaderImpl.Throw(Exception e)
在 System.Xml.XmlTextReaderImpl.ThrowWithoutLineInfo(String res)
在 System.Xml.XmlTextReaderImpl.ParseDocumentContent()
在 System.Xml.XmlTextReaderImpl.Read()
在 System.Xml.XmlTextReader.Read()
在 System.Xml.XmlReader.MoveToContent()
在 System.Data.DataSet.ReadXml(XmlReader reader, Boolean denyResolving)
在 System.Data.DataSet.ReadXml(String fileName)
在 John.Game.XmlControl.GetXMLValue(String Target, String XmlPath)请各位高人帮忙指点下 小弟是在无能为力 再此谢过 第一次发帖 不懂的规矩比较多 我会慢慢熟悉!
解决方案 »
- 请教一个绘制多图zedGraph的问题
- c# winform 数据处理问题?
- Winfrom如何调用其他exe已showdialog方式打开?
- FileStream Close 异常
- listbox button textbox 怎么联系一起?
- 终于出钱建立了自己的站点,用于发布共享软件,同行支持的顶一下,顶者送分
- 向ACCESS数据库中增加记录的函数,大家是否也返回自动编号值?
- 急救啊,C#-WebService-IIS的问题啊
- ?菜鸟提问
- c#写一个goole翻译软件
- CREATE TRIGGER必须是批查询中的第一条语句
- 在C#程序中,怎么使用sql语句向数据库的一列中插入空值,但是该列也可能有值,这样的语句应该怎么写。
<?xml version="1.0" encoding="utf-8" ?>
- <gameConfig>
<stateid>1</stateid>
</gameConfig>请大家帮我看看 指点一二 小弟不盛感激
正确的方法是用dataset先构造一个完整的表,就像sql的表一样
然后,直接dataset.writexml
不需要自己写如xml的头、字段,举个例子:DataSet ds = new ...;ds.Tables.Add("gameConfig");
ds.Tables[0].Columns.Add("stateid", typeof(int));
ds.Tables[0].Rows[0].Add(new object[] {1});
ds.WriteXML("Save.xml");
DataSet ds = new ...;
ds.ReadXML("Save.xml");
这样可能会有异常。
正确的方法,要先构造正确的表格结构,然后ReadXML
DataSet ds = new ...; ds.Tables.Add("gameConfig");
ds.Tables[0].Columns.Add("stateid", typeof(int));
ds.ReadXML("Save.xml");int statid = ds.Tables[0].Rows[0][0];
...
直接用dataset?
完全不需要自己指定xml里面的任何文本字段你这个写的是web程序,写API程序也是一样,
不要自己尝试直接写xml内容,一来不必要,二来不安全
你写错一个字母,xml就读不出来了。
查不出哪里有问题,问题就在:.net framwork还没有强大到可以猜出你xml的表结构。
必须你自己告诉.net你的xml里面表结构是怎样的,他可以辅助将xml数据格式化。
默认的dataset.writexml写出的xml文件比较繁杂,有很多废话,比如schema或者microsoft之类
我们一个简单的保存设置的xml不需要这些。
我个人比较喜欢简洁的xml:
<xml ....>
<rootnode>
<configuration>
<Coordinates>
<X>12</X>
<Y>15</Y>
<X>123</X>
<Y>78</Y>
...
</Coordinates>
</configuration>
</roonode>
想要简洁的xml怎么办?
很简单,这么办:
const string XML_PERSONEL = "PersonalProfile.xml";
System.Xml.XmlTextWriter file = new System.Xml.XmlTextWriter(XML_PERSONAL, Encoding.Unicode);
file.Formatting = System.Xml.Formatting.Indented;
dsPersonal.WriteXml(file, XmlWriteMode.IgnoreSchema);