如何自动将xml标记添加到纯文本文档

时间:2015-07-28 19:59:17

标签: xml

我正在寻找一种自动将XML标签添加到纯文本文档的方法。我将创建一些自定义标签(而不仅仅是格式化)。是否有现有的软件可以做到这一点?或者有人可以将我推荐给讨论这个过程的网站吗? (对不起,我知道这很模糊,但我必须从某个地方开始)。

2 个答案:

答案 0 :(得分:0)

尝试使用XML Linq,如下面的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string input =
               "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +
               "<dataroot>" +
                 "<Op>" +
                   "<Where>AIX</Where>" +
                   "<Amount>24</Amount>" +
                 "</Op>" +
                 "<Op>" +
                   "<Where>LILLE</Where>" +
                   "<Amount>10</Amount>" +
                 "</Op>" +
                 "<Op>" +
                   "<Where>LILLE</Where>" +
                   "<Amount>18</Amount>" +
                 "</Op>" +
                 "<Op>" +
                   "<Where>AIX</Where>" +
                   "<Amount>20</Amount>" +
                 "</Op>" +
                 "<Op>" +
                   "<Where>LILLE</Where>" +
                   "<Amount>12</Amount>" +
                  "</Op>" +
               "</dataroot>";

            XDocument doc1 = XDocument.Parse(input);
            var groups = doc1.Descendants("Op").GroupBy(x => x.Element("Where").Value).ToList();
            int count = doc1.Descendants("Op").Count();
            int total = doc1.Descendants("Amount").Select(x => (int)x).Sum();

            XDocument doc2 = XDocument.Parse("<?xml version=\"1.0\" encoding=\"UTF-8\"?><Document></Document>");
            XElement document = doc2.Element("Document");
            XElement recap = new XElement("Recap");
            document.Add(recap);
            recap.Add(new XElement("Nop", count));
            recap.Add(new XElement("TotAmount", total));

            foreach (var opGroup in groups.AsEnumerable())
            {
                XElement location = new XElement("Location");
                document.Add(location);
                location.Add(opGroup.Elements("Where").FirstOrDefault());
                int groupCount = opGroup.Count();
                int locAmount = opGroup.Descendants("Amount").Select(x => (int)x).Sum();
                location.Add(new XElement("Nop", groupCount));
                location.Add(new XElement("LocAmount", locAmount));

                XElement ops = new XElement("Ops");
                location.Add(ops);
                foreach (var op in opGroup)
                {
                    ops.Add(op.Element("Amount"));
                }

            }


        }
    }
}
​

答案 1 :(得分:0)

我不知道有任何可用的服务。如果您想自己编写代码,则可能必须使用元素,子元素及其值,应该有一个业务逻辑来区分子元素和父元素。 考虑所有值,标签在.txt文件中可用。 在python中,您可以通过逐个读取文件中的值来获取此文件并使用一些XML库来构建XML。