C# 如何把datatable中的数据存到xml文件的某一个节点下
C#如何把datatable中的数据存到xml文件的某一个节点下。我现在只能简单的通过dt.WriteXml(@"e:\abc.xml")这样一个语句将datatable...
C# 如何把datatable中的数据存到xml文件的某一个节点下。 我现在只能简单的通过dt.WriteXml(@"e:\abc.xml")这样一个语句将datatable存起来,但是这样是整个xml文件从根节点开始都是这个datatable的数据。我是想把数据存到某一个子节点,请问这样如何实现呢???
展开
4个回答
展开全部
DataTable dt; 假设dt是你的实例datatable
xmlDocument xmlDoc=new xmlDocument();
xmlDoc.Load(@"e:\abc.xml");
假设我要把dt.Rows[0][0]存在No=11的Job下Name的位置
XmlNode xn_root=xmlDoc.SelectSingleNode("Jobs");//找到根节点
XmlNodeList nodeList=xn_root.ChildNodes;//目的在于检索所有节点
foreach(XmlNode xn in nodeList)
{
if(xn.SelectSingleNode("No").innerText==11)
{
xn.SelectSingleNode("Name").innerText="TestName";
xmlDoc.Save(@"e:\abc.xml");
}
}
xml结构如下
<Jobs>
<Job>
<Name></Name>
<No>11</No>
</Job>
<Job>
<Name></Name>
<No>12</No>
</Job>
</Jobs>
xmlDocument xmlDoc=new xmlDocument();
xmlDoc.Load(@"e:\abc.xml");
假设我要把dt.Rows[0][0]存在No=11的Job下Name的位置
XmlNode xn_root=xmlDoc.SelectSingleNode("Jobs");//找到根节点
XmlNodeList nodeList=xn_root.ChildNodes;//目的在于检索所有节点
foreach(XmlNode xn in nodeList)
{
if(xn.SelectSingleNode("No").innerText==11)
{
xn.SelectSingleNode("Name").innerText="TestName";
xmlDoc.Save(@"e:\abc.xml");
}
}
xml结构如下
<Jobs>
<Job>
<Name></Name>
<No>11</No>
</Job>
<Job>
<Name></Name>
<No>12</No>
</Job>
</Jobs>
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那就要自己写了,生成xml保存到变量中,然后操作xml插入你想要的节点下。具体如何操作baidu吧,祝你好运!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-24
展开全部
将datatable数据变成string型 放入xml结点就可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-04-20
展开全部
class ClsXMLoperate
{
//定义变量
private static XmlDocument objXmlDoc = null;
private static string XmlFilePath;
public ClsXMLoperate(string _XmlFilePath)
{
objXmlDoc = new XmlDocument();
XmlFilePath = _XmlFilePath;
if (System.IO.File.Exists(_XmlFilePath))
{
objXmlDoc.Load(_XmlFilePath);
}
else
{
throw new Exception("文件不存在");
}
}
/// <summary>
/// 添加一个节点及次节点的子节点
/// </summary>
/// <param name="_XmlFilePath">文件路径</param>
/// <param name="_ParentNode">父节点</param>
/// <param name="ChildNode">子节点名称</param>
/// <param name="Content"></param>
public bool InsertSingleNode( string _ParentNode, string ChildNode, string Content)
{
try
{
//objXmlDoc.Load(_XmlFilePath);
//插入一节点
XmlNode objRootNode = objXmlDoc.SelectSingleNode(_ParentNode);
XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
objChildNode.InnerText = Content;
objRootNode.AppendChild(objChildNode);
objXmlDoc.Save(XmlFilePath);
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// 修改一个节点内容,使用方式如下
/// xmlTool.UpdateXmlNode("c:\filepath\xml.xml","Book/Authors[ISBN=\"0002\"]/Content","contents);
/// </summary>
/// <param name="XmlPathNode"></param>
/// <param name="Content"></param>
/// <returns></returns>
public bool UpdateXmlNode(string XmlPathNode, string Content)
{
//更新内容。
try
{
objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
objXmlDoc.Save(XmlFilePath);
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// 获取节点内容
/// </summary>
/// <param name="XmlNode"></param>
/// <returns></returns>
public string GetNodeContent(string XmlNode)
{
return objXmlDoc.SelectSingleNode(XmlNode).InnerText;
}
//保存xml文件
public void SaveXml()
{
try
{
objXmlDoc.Save(XmlFilePath);
}
catch (System.Exception ex)
{
throw ex;
}
}
}
---------------------------------------------------
比如要获取某个节点内容
ClsXMLoperate xmlfile = new ClsXMLoperate(xmlfilepath--是你设定的文件路径);
xmlfile.GetNodeContent("根节点/父节点点/子节点");
更新:
xmlDoc.UpdateXmlNode("根节点/父节点点/子节点","节点内容");
添加时使用函数InsertSingleNode( 父节点,插入节点名称,内容)就可以了。
更新和插入成功的话会返回true,否则是false
另外,团IDC网上有许多产品团购,便宜有口碑
{
//定义变量
private static XmlDocument objXmlDoc = null;
private static string XmlFilePath;
public ClsXMLoperate(string _XmlFilePath)
{
objXmlDoc = new XmlDocument();
XmlFilePath = _XmlFilePath;
if (System.IO.File.Exists(_XmlFilePath))
{
objXmlDoc.Load(_XmlFilePath);
}
else
{
throw new Exception("文件不存在");
}
}
/// <summary>
/// 添加一个节点及次节点的子节点
/// </summary>
/// <param name="_XmlFilePath">文件路径</param>
/// <param name="_ParentNode">父节点</param>
/// <param name="ChildNode">子节点名称</param>
/// <param name="Content"></param>
public bool InsertSingleNode( string _ParentNode, string ChildNode, string Content)
{
try
{
//objXmlDoc.Load(_XmlFilePath);
//插入一节点
XmlNode objRootNode = objXmlDoc.SelectSingleNode(_ParentNode);
XmlElement objChildNode = objXmlDoc.CreateElement(ChildNode);
objChildNode.InnerText = Content;
objRootNode.AppendChild(objChildNode);
objXmlDoc.Save(XmlFilePath);
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// 修改一个节点内容,使用方式如下
/// xmlTool.UpdateXmlNode("c:\filepath\xml.xml","Book/Authors[ISBN=\"0002\"]/Content","contents);
/// </summary>
/// <param name="XmlPathNode"></param>
/// <param name="Content"></param>
/// <returns></returns>
public bool UpdateXmlNode(string XmlPathNode, string Content)
{
//更新内容。
try
{
objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
objXmlDoc.Save(XmlFilePath);
return true;
}
catch (Exception ex)
{
return false;
}
}
/// <summary>
/// 获取节点内容
/// </summary>
/// <param name="XmlNode"></param>
/// <returns></returns>
public string GetNodeContent(string XmlNode)
{
return objXmlDoc.SelectSingleNode(XmlNode).InnerText;
}
//保存xml文件
public void SaveXml()
{
try
{
objXmlDoc.Save(XmlFilePath);
}
catch (System.Exception ex)
{
throw ex;
}
}
}
---------------------------------------------------
比如要获取某个节点内容
ClsXMLoperate xmlfile = new ClsXMLoperate(xmlfilepath--是你设定的文件路径);
xmlfile.GetNodeContent("根节点/父节点点/子节点");
更新:
xmlDoc.UpdateXmlNode("根节点/父节点点/子节点","节点内容");
添加时使用函数InsertSingleNode( 父节点,插入节点名称,内容)就可以了。
更新和插入成功的话会返回true,否则是false
另外,团IDC网上有许多产品团购,便宜有口碑
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询