wxml报错原因_C#生成、解析xml文件以及处理报错原因
轉(zhuǎn)載自:http://blog.csdn.net/lilinoscar/article/details/21027319
簡單的介紹一下生成XML文件以及解析,因?yàn)橛行?shù)據(jù)不一定放到數(shù)據(jù)庫,減少鏈接數(shù)據(jù)庫
用xml還是比較好些。如果遇到問題也就是解析時(shí)報(bào)錯(cuò),對于解析,可以選擇用ie瀏覽器進(jìn)行驗(yàn)證
是否符合xml格式,不能顯示說明不正確,用記事本打開看也沒有發(fā)現(xiàn)啥情況,復(fù)制出來到別的xml
文件里,運(yùn)行可能正確,那就說明生成的xml編碼有問題。還有就是節(jié)點(diǎn)有什么空格啥的。
Load和LoadXml方法的區(qū)別?
Load方法可以解析包括xml的頭部文件“<?xml version="1.0" encoding="utf-8"?>”,而LoadXml
方法不能解析,會報(bào)錯(cuò),它只能解析如:647e7d54-321c-4bca-ac10-301de2837d9d
中國案件4文件,不能包含xml的頭部文件。
1.序列化類:
///
/// 序列化成XML
///
///
///
public static string XmlSerialize(object o)
{
XmlSerializer ser = new XmlSerializer(o.GetType());
System.IO.MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem, Encoding.UTF8);
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ser.Serialize(writer, o, ns);
writer.Close();
return Encoding.UTF8.GetString(mem.ToArray());
}
///
/// 解析成XML
///
///
///
///
public static T XmlDeserialize(string s)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.Load(s);
XmlNodeReader reader = new XmlNodeReader(xdoc.DocumentElement);
XmlSerializer ser = new XmlSerializer(typeof(T));
object obj = ser.Deserialize(reader);
return (T)obj;
}
catch
{
return default(T);
}
}
///
/// 解析成XML,不能解析包含頭部文件<?xml version="1.0" encoding="utf-8"?>
///
///
///
///
public static T LoadXmlDeserialize(string s)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.LoadXml(s);
XmlNodeReader reader = new XmlNodeReader(xdoc.DocumentElement);
XmlSerializer ser = new XmlSerializer(typeof(T));
object obj = ser.Deserialize(reader);
return (T)obj;
}
catch
{
return default(T);
}
}
2.//Resources類
public class Resources
{
public Guid Guid { get; set; }
public string Name { get; set; }
}
3.//生成xml
public void CreateXml(List _list, string path)
{
var xml = SerializerHelper.XmlSerialize(_list).Trim();//這個(gè)地方也需要去除空格,不然也會報(bào)錯(cuò),錯(cuò)誤跟下面的一樣。
// using (StreamWriter sw = new StreamWriter(path, false,Encoding.UTF8))這個(gè)生成的xml看著是沒有問題
但是網(wǎng)頁IE不能解析,說明有問題,直接去掉Encoding.UTF8即可,不然報(bào)錯(cuò)“根級別上的數(shù)據(jù)無效”
using (StreamWriter sw = new StreamWriter(path, false))
{
sw.Write(xml);
}
}
4.//解析XML,指定文件路徑,判斷文件夾是否存在以及查找文件名
DirectoryInfo di = new DirectoryInfo("Xml");
if (!di.Exists)
{
Directory.CreateDirectory("Xml");
}
if (di.GetFiles().Length > 0)
{
foreach (FileInfo fi in di.GetFiles())
{
if (fi.Name.Contains("Resource.xml"))
{
var list = SerializerHelper.XmlDeserialize>("Xml/Resource.xml");
if (list.Count > 0)
{
}
}
}
}
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎總結(jié)
以上是生活随笔為你收集整理的wxml报错原因_C#生成、解析xml文件以及处理报错原因的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样做一份简单的手抄报 简单的手抄报制作
- 下一篇: 电吹管好学吗 电吹管好不好学