【问题标题】:convert xml file into flat file in a tabular format将 xml 文件转换为表格格式的平面文件
【发布时间】:2017-02-07 06:32:13
【问题描述】:

我有许多想要使用 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

【问题讨论】:

标签: c# xml


【解决方案1】:

这是您的解决方案:

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();
    }

【讨论】:

  • 谢谢!但是,我正在尝试编写一个通用代码来解析不同的 xml 模式,而无需对标签进行硬编码
  • 也许这会对你有所帮助msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 2011-03-23
  • 2012-12-20
  • 2019-07-01
  • 1970-01-01
  • 2021-10-15
  • 2018-01-17
  • 2016-06-08
  • 2011-05-27
  • 2019-04-07
相关资源
最近更新 更多