Xml 从vb.net中的I生成中删除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文件已成功更新!”) 我的输出如下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>
<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