C# XML导入,数据不总是相同的。有什么建议吗?
我有数千个XML文件,每个文件描述一个对象的属性。每个对象都不同,这意味着XML文件不同。我正试图为我想从文件中解析出来的每一位数据编写一个函数 其目的是收集信息。创建一个新对象,然后将其作为加密文件写入磁盘。我已经研究了序列化,但我认为由于提供给我的数据不一致,它可能会给我带来问题 以下是XML的一个示例:C# XML导入,数据不总是相同的。有什么建议吗?,c#,xml,C#,Xml,我有数千个XML文件,每个文件描述一个对象的属性。每个对象都不同,这意味着XML文件不同。我正试图为我想从文件中解析出来的每一位数据编写一个函数 其目的是收集信息。创建一个新对象,然后将其作为加密文件写入磁盘。我已经研究了序列化,但我认为由于提供给我的数据不一致,它可能会给我带来问题 以下是XML的一个示例: <TestXMl Var1="000" Var2="000" Var3="01"> <var4>testdata</var4> <
<TestXMl Var1="000" Var2="000" Var3="01">
<var4>testdata</var4>
<var5>testdata</var5>
<var6>testdata</var6>
<DeeperLevel>
<var7>testdata</var7>
<var8>testdata</var8>
<var9>testdata</var9>
<var10>testdata</var10>
</Deeper
Level>
</TestXMl>
我对var5和var6都使用上述函数。但是,我无法使此函数与其他变量一起工作。我有点不确定我是否在写函数的方向。所有的建议都是非常受欢迎的
提前欢呼 您可以使用
列表来收集任意数量的字符串属性,而不是单个字符串属性。然后,您可以通过索引引用它们。var1、2和3不是元素的属性
试一试
考虑使用XPath。它们是XML的查询语言,就像SQL是RDBMS的查询语言一样
这是一个样品
static void Main(string[] args)
{
string s = "<TestXMl Var1=\"000\" Var2=\"000\" Var3=\"01\"><var4>testdata</var4><var5>testdata</var5><var6>testdata</var6><DeeperLevel><var7>testdata</var7><var8>testdata</var8><var9>testdata</var9><var10>testdata</var10></DeeperLevel></TestXMl> ";
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(s);
string var1 = xDoc.SelectSingleNode("/TestXMl/attribute::Var1").Value;
Console.WriteLine(var1);
string var2 = xDoc.SelectSingleNode("/TestXMl/attribute::Var2").Value;
Console.WriteLine(var2);
string var3 = xDoc.SelectSingleNode("/TestXMl/attribute::Var3").Value;
Console.WriteLine(var3);
string var4 = xDoc.SelectSingleNode("/TestXMl/var4").InnerText;
Console.WriteLine(var4);
string var5 = xDoc.SelectSingleNode("/TestXMl/var5").InnerText;
Console.WriteLine(var5);
string var6 = xDoc.SelectSingleNode("/TestXMl/var6").InnerText;
Console.WriteLine(var6);
string var7 = xDoc.SelectSingleNode("/TestXMl/DeeperLevel/var7").InnerText;
Console.WriteLine(var7);
string var8 = xDoc.SelectSingleNode("/TestXMl/DeeperLevel/var8").InnerText;
Console.WriteLine(var8);
string var9 = xDoc.SelectSingleNode("/TestXMl/DeeperLevel/var9").InnerText;
Console.WriteLine(var9);
string var10 = xDoc.SelectSingleNode("/TestXMl/DeeperLevel/var10").InnerText;
Console.WriteLine(var10);
}
static void Main(字符串[]args)
{
字符串s=“TestDataTestDataTestData”;
XmlDocument xDoc=新的XmlDocument();
xDoc.LoadXml;
字符串var1=xDoc.SelectSingleNode(“/TestXMl/attribute::var1”).Value;
控制台写入线(var1);
字符串var2=xDoc.SelectSingleNode(“/TestXMl/attribute::var2”).Value;
控制台写入线(var2);
字符串var3=xDoc.SelectSingleNode(“/TestXMl/attribute::var3”).Value;
控制台写入线(var3);
字符串var4=xDoc.SelectSingleNode(“/TestXMl/var4”).InnerText;
控制台写入线(var4);
字符串var5=xDoc.SelectSingleNode(“/TestXMl/var5”).InnerText;
控制台写入线(var5);
字符串var6=xDoc.SelectSingleNode(“/TestXMl/var6”).InnerText;
控制台写入线(var6);
字符串var7=xDoc.SelectSingleNode(“/TestXMl/DeeperLevel/var7”).InnerText;
控制台写入线(var7);
字符串var8=xDoc.SelectSingleNode(“/TestXMl/DeeperLevel/var8”).InnerText;
控制台写入线(var8);
字符串var9=xDoc.SelectSingleNode(“/TestXMl/DeeperLevel/var9”).InnerText;
控制台写入线(var9);
字符串var10=xDoc.SelectSingleNode(“/TestXMl/DeeperLevel/var10”).InnerText;
控制台写入线(var10);
}
希望这有助于……;) public void ParseVar4(字符串目录){XmlTextReader FixtureReader=new XmlTextReader(目录);FixtureReader.WhitespaceHandling=WhitespaceHandling.None;XmlDocument xDoc=new XmlDocument();xDoc.Load(FixtureReader);var4=xDoc.SelectSingleNode(“/TestXMl/attribute::Var3”).Value;}抱歉@Michael如果这是一个问题,我没有收到您的评论,请详细说明,以便我能帮助您。我运行了代码(在var4前面添加了字符串),它的行为正常。。。
XmlAttributeCollection atribs = doc.DocumentElement.Attributes;
static void Main(string[] args)
{
string s = "<TestXMl Var1=\"000\" Var2=\"000\" Var3=\"01\"><var4>testdata</var4><var5>testdata</var5><var6>testdata</var6><DeeperLevel><var7>testdata</var7><var8>testdata</var8><var9>testdata</var9><var10>testdata</var10></DeeperLevel></TestXMl> ";
XmlDocument xDoc = new XmlDocument();
xDoc.LoadXml(s);
string var1 = xDoc.SelectSingleNode("/TestXMl/attribute::Var1").Value;
Console.WriteLine(var1);
string var2 = xDoc.SelectSingleNode("/TestXMl/attribute::Var2").Value;
Console.WriteLine(var2);
string var3 = xDoc.SelectSingleNode("/TestXMl/attribute::Var3").Value;
Console.WriteLine(var3);
string var4 = xDoc.SelectSingleNode("/TestXMl/var4").InnerText;
Console.WriteLine(var4);
string var5 = xDoc.SelectSingleNode("/TestXMl/var5").InnerText;
Console.WriteLine(var5);
string var6 = xDoc.SelectSingleNode("/TestXMl/var6").InnerText;
Console.WriteLine(var6);
string var7 = xDoc.SelectSingleNode("/TestXMl/DeeperLevel/var7").InnerText;
Console.WriteLine(var7);
string var8 = xDoc.SelectSingleNode("/TestXMl/DeeperLevel/var8").InnerText;
Console.WriteLine(var8);
string var9 = xDoc.SelectSingleNode("/TestXMl/DeeperLevel/var9").InnerText;
Console.WriteLine(var9);
string var10 = xDoc.SelectSingleNode("/TestXMl/DeeperLevel/var10").InnerText;
Console.WriteLine(var10);
}