C# 如何把datatable中的数据存到xml文件的某一个节点下
答案:4 悬赏:70 手机版
解决时间 2021-01-29 22:54
- 提问者网友:缘字诀
- 2021-01-29 01:54
C# 如何把datatable中的数据存到xml文件的某一个节点下。 我现在只能简单的通过dt.WriteXml(@"e:\abc.xml")这样一个语句将datatable存起来,但是这样是整个xml文件从根节点开始都是这个datatable的数据。我是想把数据存到某一个子节点,请问这样如何实现呢???
最佳答案
- 五星知识达人网友:平生事
- 2021-01-29 03:34
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("文件不存在");
}
}
///
/// 添加一个节点及次节点的子节点
///
/// 文件路径
/// 父节点
/// 子节点名称
///
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;
}
}
///
/// 修改一个节点内容,使用方式如下
/// xmlTool.UpdateXmlNode("c:\filepath\xml.xml","Book/Authors[ISBN=\"0002\"]/Content","contents);
///
///
///
///
public bool UpdateXmlNode(string XmlPathNode, string Content)
{
//更新内容。
try
{
objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
objXmlDoc.Save(XmlFilePath);
return true;
}
catch (Exception ex)
{
return false;
}
}
///
/// 获取节点内容
///
///
///
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("文件不存在");
}
}
///
/// 添加一个节点及次节点的子节点
///
/// 文件路径
/// 父节点
/// 子节点名称
///
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;
}
}
///
/// 修改一个节点内容,使用方式如下
/// xmlTool.UpdateXmlNode("c:\filepath\xml.xml","Book/Authors[ISBN=\"0002\"]/Content","contents);
///
///
///
///
public bool UpdateXmlNode(string XmlPathNode, string Content)
{
//更新内容。
try
{
objXmlDoc.SelectSingleNode(XmlPathNode).InnerText = Content;
objXmlDoc.Save(XmlFilePath);
return true;
}
catch (Exception ex)
{
return false;
}
}
///
/// 获取节点内容
///
///
///
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网上有许多产品团购,便宜有口碑
全部回答
- 1楼网友:骨子里都是戏
- 2021-01-29 05:17
代码供参考:
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("根节点/父节点点/子节点");
- 2楼网友:人间朝暮
- 2021-01-29 04:23
那就要自己写了,生成xml保存到变量中,然后操作xml插入你想要的节点下。具体如何操作baidu吧,祝你好运!
- 3楼网友:长青诗
- 2021-01-29 04:07
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结构如下
11
12
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯