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