C#将XML文件导入VS中,把其中存储的字符串信息转换为数值并用其绘制图线
XML文件名:test2.xml需要读取其中的文本信息,转化为数值信息,然后绘制图像。privatevoidbutton1_Click(objectsender,Even...
XML文件名:test2.xml
需要读取其中的文本信息,转化为数值信息,然后绘制图像。
private void button1_Click(object sender,EventArgs e)
{
string str_path="..\\test2.xml";
XmlDocument xml=new XmlDocument();
XmlNode root;
XmlElement xe;
if(File.Exists(str_path))
{
xml.Load(str_path);
root=xml.SelectSingleNode("root"); //存在就查找根节点
}
else
{
XmlDeclaration declare=xml.CreateXmlDeclaration("1.0","UTF-8",null);
xml.AppendChild(declare);
root=xml.CreateElement("root"); //不存在就创建根节点
xml.AppendChild(root);
}
int x1,x2;
double y1,y2;
double a;
Pen myPen=new Pen(Color.Blue,3);
x1=x2=0;
y1=y2=panel1.Height/2;
for(x1=0;x1<panel1.Width;x1++)
{
a=2*Math.PI*x1/panel1.Width;
y1=Math.Sin(a);
y1=(1-y1)*panel1.Height/2;
panel1.CreateGraphics().DrawLine(myPen,x2,(float)y2,x1,(float)y1);
x2=x1;
y2=y1;
xe=xml.CreateElement("Record"); //创建元素
xe.SetAttribute("x1",x1.ToString());
xe.SetAttribute("x2",x2.ToString());
xe.SetAttribute("y1",y1.ToString());
xe.SetAttribute("y2",y2.ToString());
xe.InnerText="";
root.AppendChild(xe);
}
xml.Save(str_path);
} 展开
需要读取其中的文本信息,转化为数值信息,然后绘制图像。
private void button1_Click(object sender,EventArgs e)
{
string str_path="..\\test2.xml";
XmlDocument xml=new XmlDocument();
XmlNode root;
XmlElement xe;
if(File.Exists(str_path))
{
xml.Load(str_path);
root=xml.SelectSingleNode("root"); //存在就查找根节点
}
else
{
XmlDeclaration declare=xml.CreateXmlDeclaration("1.0","UTF-8",null);
xml.AppendChild(declare);
root=xml.CreateElement("root"); //不存在就创建根节点
xml.AppendChild(root);
}
int x1,x2;
double y1,y2;
double a;
Pen myPen=new Pen(Color.Blue,3);
x1=x2=0;
y1=y2=panel1.Height/2;
for(x1=0;x1<panel1.Width;x1++)
{
a=2*Math.PI*x1/panel1.Width;
y1=Math.Sin(a);
y1=(1-y1)*panel1.Height/2;
panel1.CreateGraphics().DrawLine(myPen,x2,(float)y2,x1,(float)y1);
x2=x1;
y2=y1;
xe=xml.CreateElement("Record"); //创建元素
xe.SetAttribute("x1",x1.ToString());
xe.SetAttribute("x2",x2.ToString());
xe.SetAttribute("y1",y1.ToString());
xe.SetAttribute("y2",y2.ToString());
xe.InnerText="";
root.AppendChild(xe);
}
xml.Save(str_path);
} 展开
2个回答
展开全部
你上面的操作似乎是把一系列图形保存为xml了,是否现在想实现反向转换?那么你认为技术难点在哪?有点建议,用系统自带的XmlSerializer即可实现序列化与反序列化,用不着你上面那么复杂地转换。示例代码。
public class XmlSerializeHelper
{
/// <summary>
/// Serialize QueryBuilder to string
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="o"></param>
/// <returns></returns>
public static string Serialize<T>(T o) where T : class
{
XmlSerializer ser = new XmlSerializer(o.GetType());
StringWriter textWriter = new StringWriter();
ser.Serialize(textWriter, o);
return textWriter.ToString();
}
/// <summary>
/// DeSerialize string to QueryBuilder
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="s"></param>
/// <returns></returns>
public static T DeSerialize<T>(string s) where T : class
{
XmlSerializer ser = new XmlSerializer(typeof(T));
TextReader tr = new StringReader(s);
return ser.Deserialize(tr) as T;
}
}
更多追问追答
追问
我是想把XML里面存好的点的数据反序列化,并且绘图图形。
上面的程序没有调用我存好的XML文件?也没有绘图的部分?
我第一次用这个XmlSerializer。
追答
用上面的方法不需要你管数据是怎么存储的,. net内置了方法保存每个科序列化类到文件。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询