Xml 从vb.net中的I生成中删除table1关键字

Xml 从vb.net中的I生成中删除table1关键字,xml,vb.net,Xml,Vb.net,在生成XML时,表1和表2会自动添加。 我想删除此关键字,并将替换为Name关键字 . 这是我的密码 Dim xmlDoc As StreamWriter=新StreamWriter(Server.MapPath(“\App\u Data\myxml.xml”),False) dsMaster.WriteXml(xmlDoc) xmlDoc.Close() Write(“myxml.XML文件已成功更新!”) 我的输出如下 <NewDataSet> <Table1>

在生成XML时,表1和表2会自动添加。 我想删除此关键字,并将替换为Name关键字 . 这是我的密码

Dim xmlDoc As StreamWriter=新StreamWriter(Server.MapPath(“\App\u Data\myxml.xml”),False) dsMaster.WriteXml(xmlDoc) xmlDoc.Close() Write(“myxml.XML文件已成功更新!”)

我的输出如下

<NewDataSet>
  <Table1>
    <count>1</count>
    <word>Repair</word>
    <Name>abc</Name>
  </Table1>
  <Table1>
    <count>2</count>
    <word>Repair1</word>
    <Name>abc</Name>
  </Table1>
  <Table1>
    <count>1</count>
    <word>Repair2</word>
    <Name>abc</Name>
  </Table1>
  <Table1>
    <count>2</count>
    <word>Repair3</word>
    <Name>abc</Name>
  </Table1>
  <Table1>
    <count>1</count>
    <word>Repair4</word>
    <Name>abc</Name>
  </Table1>
  <Table2>
    <count>27</count>
    <word>Repair5</word>
    <Name>xyz1</Name>
  </Table2>
  <Table2>
    <count>14</count>
    <word>Repair6</word>
    <Name>xyz2</Name>
  </Table2>
  <Table2>
    <count>19</count>
    <word>Repair7</word>
    <Name>xyz3</Name>
  </Table2>
  <Table2>
    <count>14</count>
    <word>Repair8</word>
    <Name>xyz5</Name>
  </Table2>
  <Table2>
    <count>22</count>
    <word>Repair9</word>
    <Name>xyz6</Name>
  </Table2>
</NewDataSet>

1.
修理
abc
2.
修理1
abc
1.
修理2
abc
2.
修理3
abc
1.
修理4
abc
27
修理
xyz1
14
修理
xyz2
19
修理
xyz3
14
修理8
xyz5
22
修理
xyz6

假设dsMaster是一个数据集,它由两个数据表组成,即表1和表2

您需要重命名DataTable名称,如下所示:

dsMaster.Tables(0).TableName = dsMaster.Tables(0).Rows(0)("Name")
dsMaster.Tables(1).TableName = dsMaster.Tables(1).Rows(0)("Name")

尽管如此,这将是一个非常糟糕的实现。最好创建结构类,然后序列化它们,而不是数据表。

使用XML Linq比直接使用XML更容易。我有点狡猾,但找到了一个简单的方法。您必须从头到尾枚举XML,才能使其正常工作。与所有列表/数组对象一样,在枚举和替换对象时,如果继续操作,则会出错

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;


namespace ConsoleApplication51
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            string input = 
            "<NewDataSet>" +
              "<Table1>" +
                "<count>1</count>" +
                "<word>Repair</word>" +
                "<Name>abc</Name>" +
              "</Table1>" +
              "<Table1>" +
                "<count>2</count>" +
                "<word>Repair1</word>" +
                "<Name>abc</Name>" +
              "</Table1>" +
              "<Table1>" +
                "<count>2</count>" +
                "<word>Repair3</word>" +
                "<Name>abc</Name>" +
              "</Table1>" +
              "<Table2>" +
                "<count>27</count>" +
                "<word>Repair5</word>" +
                "<Name>xyz1</Name>" +
              "</Table2>" +
              "<Table2>" +
                "<count>14</count>" +
                "<word>Repair6</word>" +
                "<Name>xyz2</Name>" +
              "</Table2>" +
              "<Table2>" +
                "<count>19</count>" +
                "<word>Repair7</word>" +
                "<Name>xyz3</Name>" +
              "</Table2>" +
            "</NewDataSet>";

            XElement ds = XElement.Parse(input);

            List<XElement> table1s =  ds.Descendants("Table1").ToList();
            for(int e = table1s.Count - 1; e >= 0; e--)
            {
                table1s[e].ReplaceWith(new XElement("ABC", table1s[e].Descendants()));
            }
            List<XElement> table2s = ds.Descendants("Table2").ToList();
            for (int e = table2s.Count - 1; e >= 0; e--)
            {
                table2s[e].ReplaceWith(new XElement("XYZ", table2s[e].Descendants()));
            }
        }
    }


}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序51
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
字符串输入=
"" +
"" +
"1" +
“修理”+
“abc”+
"" +
"" +
"2" +
“修理1”+
“abc”+
"" +
"" +
"2" +
“修理3”+
“abc”+
"" +
"" +
"27" +
“修理5”+
“xyz1”+
"" +
"" +
"14" +
“修理6”+
“xyz2”+
"" +
"" +
"19" +
“修理7”+
“xyz3”+
"" +
"";
XElement ds=XElement.Parse(输入);
List table1s=ds.substands(“Table1”).ToList();
对于(int e=table1s.Count-1;e>=0;e--)
{
table1s[e].replacetwith(新的XElement(“ABC”,table1s[e].substands());
}
List table2s=ds.substands(“Table2”).ToList();
对于(int e=table2s.Count-1;e>=0;e--)
{
table2s[e].替换为(新的XElement(“XYZ”,table2s[e].子体());
}
}
}
}

您需要使用什么
名称关键字
?name1代表table1,name2代表table2或什么?并显示用于填充
dsMaster
的查询我只想删除自动生成的关键字table1和table2。我想用name或name2替换。哪一个是数据库列OK!!我明白了,但我问的不是表1或表2,而是你想给什么名字?比如域名,比如Abc.com,xyz.com