永发信息网

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网上有许多产品团购,便宜有口碑
全部回答
  • 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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯