Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为包含多个表的数据集编写XML_C#_Asp.net_Xml - Fatal编程技术网

C# 为包含多个表的数据集编写XML

C# 为包含多个表的数据集编写XML,c#,asp.net,xml,C#,Asp.net,Xml,我的数据集中有两个表 我需要将我的XML结构为: <MyRoot> <Settings> <Param1>value1</Param1> <Param2>value2</Param2> <Param3>value3</Param3> </Settings> <Books> <Book>

我的数据集中有两个表

我需要将我的XML结构为:

<MyRoot>
    <Settings>
        <Param1>value1</Param1>
        <Param2>value2</Param2>
        <Param3>value3</Param3>
    </Settings>
    <Books>
      <Book>
          <BookId>1000</BookId>
          <BookName>Book1</BookName>
      </Book>
      <Book>
          <BookId>2000</BookId>
          <BookName>Book2</BookName>
      </Book>
    </Books>
</MyRoot>

谢谢。

您可以使用如下代码覆盖原始XML

string filename = "XmlDoc.xml";
System.IO.FileStream stream = new System.IO.FileStream (filename, System.IO.FileMode.Create);
ds.WriteXml(stream); 
XmlDocument xmldoc = new XmlDocument("XmlDoc.xml");
XmlNode node1 = xmldoc.CreateNode("Books","Books");

foreach(XmlNode nd in xmldoc.Nodes) {
  if(node.value =="Book")   
    node1.AppendChild(nd);
}

xmldoc.Nodes.Add(node1);
xmldoc.SaveAs("newXmlDoc.Xml");

我不知道如何直接告诉
DataSet.WriteXml
以您想要的方式编写XML,因此您有两个大的选择:

  • DataSet.WriteXml
    编写XML,然后修改它
  • 自己编写序列化代码
对于这两种方法,您有不同的选择。在第一种情况下,你可以

  • 将创建的XML加载到
    XDocument
    XmlDocument
    中,并通过代码重新构造它
  • 通过XSLT转换XML(与代码解决方案相比,我更喜欢使用XSLT)
第二种情况下的选择应该是显而易见的。如果您创建自己的
XmlWriter
并使用
DataTable.WriteXml
对其进行写入,您应该能够在几行代码中定义自己的格式

为您的用例选择正确的解决方案取决于您。我可能会选择XSTL解决方案。

dataSet=GetList();dataSet.DataSetName=“MyRoot”;dataSet.Tables[0].TableName=“Settings”;dataSet.Tables[1].TableName=“Books”;StringWriter swriter=新StringWriter();dataSet.WriteXml(swriter);字符串dsResult=swriter.ToString();
dataSet = GetList();
dataSet.DataSetName = "MyRoot"; 
dataSet.Tables[0].TableName = "Settings"; 
dataSet.Tables[1].TableName = "Books"; 
StringWriter swriter = new StringWriter(); 
dataSet.WriteXml(swriter); 
string dsResult = swriter.ToString();
string filename = "XmlDoc.xml";
System.IO.FileStream stream = new System.IO.FileStream (filename, System.IO.FileMode.Create);
ds.WriteXml(stream); 
XmlDocument xmldoc = new XmlDocument("XmlDoc.xml");
XmlNode node1 = xmldoc.CreateNode("Books","Books");

foreach(XmlNode nd in xmldoc.Nodes) {
  if(node.value =="Book")   
    node1.AppendChild(nd);
}

xmldoc.Nodes.Add(node1);
xmldoc.SaveAs("newXmlDoc.Xml");