从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 在此处查看示例