[英]convert xml file into flat file in a tabular format
我想使用C#將許多XML拼合並另存為文件(如下所示)。 我嘗試的一種選擇是使用excel導入文件,然后從c#調用vba腳本。 在C#中是否可以執行此操作?
輸入XML示例:
<request>
<log-date>11/28/2016 04:48:40</log-date>
<service-name>getPdf</service-name>
<request-id>1234</request-id>
<request-xml>
<MyRequest xmlns="http://abcd.com">
<GroupID>123</GroupID>
<ClientName>ACBD</ClientName>
<BrokerInfo>
<BrokerLoginName>9876</BrokerLoginName>
<FullName>John</FullName>
</BrokerInfo>
<BrokerInfo>
<BrokerLoginName>0987</BrokerLoginName>
<FullName>Mike</FullName>
</BrokerInfo>
</MyRequestRequest>
</request-xml>
</request>
預期輸出文件:
log-date|service-name|request-id|groupID|ClientName|BrokerLoginName|FullName
11/28/2016 04:48:40|getPdf|1234|123|ACBD|9876|John
11/28/2016 04:48:40|getPdf|1234|123|ACBD|0987|Mike
這是您的解決方案:
using System.IO;
using System.Xml;
public static void ReadInnerText()
{
StreamWriter file = new StreamWriter("myTextFile.txt");
file.WriteLine("log-date|service-name|request-id|groupID|ClientName|BrokerLoginName|FullName");
string Line = string.Empty;
string BrokerLoginName = string.Empty;
XmlDocument doc = new XmlDocument();
XmlNodeList SecondTag;
XmlNodeList ThirdTag;
XmlNodeList FourthTag;
XmlNodeList FifthTag;
doc.Load("inputFile.xml");
XmlNodeList elemList = doc.GetElementsByTagName("request");
foreach (XmlNode firstNode in elemList)
{
SecondTag = firstNode.ChildNodes;
foreach (XmlNode SecondNode in SecondTag)
{
if (SecondNode.Name.Equals("log-date"))
{
Line = SecondNode.InnerText + "|";
}
if (SecondNode.Name.Equals("service-name"))
{
Line = Line + SecondNode.InnerText + "|";
}
if (SecondNode.Name.Equals("request-id"))
{
Line = Line + SecondNode.InnerText + "|";
}
ThirdTag = SecondNode.ChildNodes;
foreach (XmlNode ThirdNode in ThirdTag)
{
FourthTag = ThirdNode.ChildNodes;
foreach (XmlNode FourthNode in FourthTag)
{
if (FourthNode.Name.Equals("GroupID"))
{
Line = Line + FourthNode.InnerText + "|";
}
if (FourthNode.Name.Equals("GroupName"))
{
Line = Line + FourthNode.InnerText + "|";
}
if (FourthNode.Name.Equals("ClientName"))
{
Line = Line + FourthNode.InnerText + "|";
}
FifthTag = FourthNode.ChildNodes;
foreach (XmlNode FifthNode in FifthTag)
{
if (FifthNode.Name.Equals("BrokerLoginName"))
{
BrokerLoginName = FifthNode.InnerText + "|";
}
if (FifthNode.Name.Equals("FullName"))
{
file.WriteLine(Line+BrokerLoginName+FifthNode.InnerText);
}
}
}
}
}
}
file.Close();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.