从xml文件中提取值并将其写入Excel表格中

我有一个情况在这里,我必须编写一个简单的WPF应用程序与一个文本框和一个button,文本框是“en”,“fr”,“ru”等…

我有很多像这样的大量数据的文件。 考虑这是一个文件

<?xml version="1.0" encoding="UTF-8"?> <params> <btestsir xml:lang="fr" tId="HHXAF">Test Sirène :</btestsir> <btestsir xml:lang="en" tId="HHXAF">Test Siren :</btestsir> <btestsir xml:lang="pt" tId="HHXAF">Testar sirene:</btestsir> <btestsir xml:lang="ru" tId="HHXAF">Тест сирены:</btestsir> <btestbeep xml:lang="fr" tId="HHXA2">Test Bip :</btestbeep> <btestbeep xml:lang="en" tId="HHXA2">Test Beep :</btestbeep> <btestbeep xml:lang="pt" tId="HHXA2">Testar aviso sonoro:</btestbeep> <btestbeep xml:lang="ru" tId="HHXA2">Тест гудка:</btestbeep> </params> 

现在,如果我通过我的应用程序select“en”,然后单击button,那么只有xml:lang =“en”值匹配的两个string将被复制到Excel表格中。 并会显示这样的东西。

 For English language 

在这里输入图像说明

 For Russian language 

在这里输入图像说明

我已经试过了

 StreamReader reader = new StreamReader(strFilepath); string line; while(null != (line = reader.ReadLine())) { string[] s1 = line.Split('>'); string[] s2 = s1[1].Split('<'); if(s1[0].Contains("xml:lang=")) { } } 

这背后的逻辑很简单,首先我想用“>”分隔每一行,所以s1[0]将会有<btestsir xml:lang="fr" transId="HHXAF" s1[1]将会Test Sirène :</btestsir>

但在这里,我面临的问题是如何获取特定语言的“键” xml:lang=并将该键值对放在excel表单中,如图所示。 获取“价值”很容易s2[0]value

但是,这两个键值对应匹配,然后放入Excel表格,然后再次继续下一行。 编辑:这里的一个关键值对应放在不同的excel表单为不同的语言文件。 excel-sheet.en.xlsx将包含所有“en”,excel-sheet.fr.xlsx将包含所有“fr”等

正如我所说我有巨大的文件,它应该无缝工作,无需手动干预。

你能帮我吗!

谢谢

我会使用xpathselect器,而不是尝试xml文件的string操作。 所以你可以做一些事情,例如声明一个nodelistvariables并填充它,例如:using System.xml; … XmlNodeList childNodes;

childNodes = xml.SelectNodes(“ParentNodeofbtestsirNode / btestsirnode [@ lang ='en']); …从那里做你的操作对每个XmlNode,如foreach(XNode xnd childNodes){'…}

像这样的东西应该这样做:

 XmlDocument doc = new XmlDocument(); doc.Load("sample.xml"); var root = doc.DocumentElement; var elements = root.XPathSelectElements("//[@xml:lang='en']"); foreach (var child in elements) { //child.Name >> will give you btestsir //child.Value >> will give you Test Siren : } 

要创build/pipe理电子表格,请使用EPPlus 在此处查看示例