Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从xml文件中获取值并逐行写入excel工作表_C#_.net_Xml_Excel_Xpath - Fatal编程技术网

C# 从xml文件中获取值并逐行写入excel工作表

C# 从xml文件中获取值并逐行写入excel工作表,c#,.net,xml,excel,xpath,C#,.net,Xml,Excel,Xpath,我有一个情况在这里,我必须写一个简单的WPF应用程序与一个文本框和一个按钮,文本框是“恩”,“fr”,“ru”,等等 我有很多这样的文件和大量的数据。这是一个文件 <?xml version="1.0" encoding="UTF-8"?> <params> <btestsir xml:lang="fr" tId="HHXAF">Test Sirène :</btestsir> <btestsir xml:lang="en"

我有一个情况在这里,我必须写一个简单的WPF应用程序与一个文本框和一个按钮,文本框是“恩”,“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>

我试过这个

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="))
       {

       }
   }
StreamReader=newstreamreader(strFilepath);
弦线;
while(null!=(line=reader.ReadLine())
{                  
字符串[]s1=line.Split('>');

string[]s2=s1[1]。拆分(“我将使用xpath选择器,而不是尝试对xml文件进行字符串操作。因此,您可以执行类似于声明节点列表变量并填充它的操作,即: 使用System.xml; ... XmlNodeList子节点

childNodes=xml.SelectNodes(“ParentNodeofbtestsirNode/btestsirnode[@lang='en']); ... 然后继续对每个XmlNode进行操作,例如 foreach(子节点中的xmlnodexnd) { '...
}

我将使用xpath选择器,而不是尝试对xml文件进行字符串操作。因此,您可以执行类似于声明节点列表变量并填充它的操作,即: 使用System.xml; ... XmlNodeList子节点

childNodes=xml.SelectNodes(“ParentNodeofbtestsirNode/btestsirnode[@lang='en']); ... 然后继续对每个XmlNode进行操作,例如 foreach(子节点中的xmlnodexnd) { '...
}

像这样的东西应该可以做到:

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 :
} 

要创建/管理电子表格,请使用EPPlus,类似这样的工具:

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 :
} 


使用EPPlus创建/管理电子表格的方法并不理想。你应该正确使用XML。我知道,但我也知道这段代码是2002年的代码,我做得再好不过了,顺便说一句,这不是一个XML文件,看起来可能是这样。此外,为了得到理想的解决方案,我在这里提出了。这是你正在做的方法不是很理想。你应该正确地使用XML。我知道,但我也知道这段代码是2002年的代码,我做得再好不过了,顺便说一句,它不是XML文件,可能看起来像。此外,为了得到理想的解决方案,我在这里提出。但主要问题是如何将这些键值对按行放入Excel工作表row@Debhere我有在我对EPPLus示例的回答中添加了一个链接。不幸的是,没有人能牵着你的手浏览精确的解决方案。这是一个问答网站。但主要问题是如何将这些键值对逐行放入Excel工作表row@Debhere我已经添加了一个链接到我对EPPLus示例的回答。不幸的是,没有人能牵着你的手走过精确的解决方案。这是一个问答网站。但主要的问题是如何将这些键值对逐行放入excel工作表,获取我的代码也在做的值,这可能不是有效的方法,但这些值应该放入不同语言的不同excel工作表。您现在正在写入新的excel文件,您只是想知道如何创建/选择工作表或者您已经有一个可能要添加到的现有文件了吗?是的,我正在为每种语言创建一个新文件,然后在excel表格中为该特定语言逐行添加值,请更新我的问题,然后为每种语言创建一个新表格,说出您使用的两个字符代码,如“fr”和“en”然后,当s2[0]中有该值时,使用它来选择工作表。然后找到下一个空行并将其附加到那里。使用类似dim lastRow的整数lastRow=工作表(“fr”).Range(“A65536”).End(xlUp)。row我已更新了xml文件,请提供更多详细信息,如
“ParentNodeofbtestsirNode/btestsirnode”[
让我很困惑,它的文件很大,我无法更改这个字符串,因为这个节点在重复r次后不断更改,每次都会更改为新节点。因此,它必须根据
lang='en'
获取这个节点的节点值和内部文本。你能帮我吗?但主要问题是如何将这些键值对放到Excel工作表中逐行获取我的代码正在执行的值可能不是有效的方法,但是这些值应该放在不同语言的不同excel工作表中。您现在正在写入一个新的excel文件,您只是想知道如何创建/选择工作表,或者您是否已经有一个可能要附加的现有文件?是的,我正在创建为每种语言创建一个新文件,然后在excel表格中按行添加该特定语言的值,请更新我的问题,然后为每种语言创建一个新表格,说出您使用的两个字符代码,如“fr”和“en”,然后在s2[0]中输入该值使用它来选择您的工作表。然后找到下一个空行并将其附加到那里。使用类似dim lastRow的整型lastRow=工作表(“fr”)。范围(“A65536”)。结束(xlUp)。row我已更新了xml文件,请您提供更多详细信息,如
“ParentNodeofbtestsirNode/btestsirnode”[
让我很困惑,它的文件很大,我无法更改此字符串,因为此节点在重复r次后不断更改,每次都会更改为新节点。因此,此节点值和此节点的内部文本必须基于
lang='en'
获取,您能帮我吗。
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 :
}