请帮助我!
我需要一个程序来检查XML是否包含一个specefic元素,如果没有则添加一个新元素。语言可以是C#或Python。
例如:
本程序应检查此XML是否包含Element" Name",否则创建它。
<Main>
<Person>
<name>Manfred</name>
<Age>45</Age>
<Position>Chef</Position>
</Person>
...
<person>
<Age>45</Age>
<Position>Chef</Position>
</person>
</Main>
答案 0 :(得分:1)
在C#(或任何其他.NET语言)上实现这一目标的最佳方法是使用linq2xml。这是一个非常简单的例子:
class Program
{
private const string sample =
@"<Main>
<Person>
<Name>John Smith</Name>
<Age>25</Age>
<Position>Junior accountant</Position>
</Person>
<Person>
<Age>33</Age>
<Position>Consultant</Position>
</Person>
<Person>
<Name>Manfred</Name>
<Age>45</Age>
<Position>Manager</Position>
</Person>
<Person>
<Age>99</Age>
<Position>The Chairman</Position>
</Person>
</Main>";
static void Main(string[] args)
{
var xml = XElement.Parse(sample);
var noNamePersons = xml.Elements("Person")
.Where(e => !e.Elements("Name").Any());
foreach (var person in noNamePersons)
{
person.Add(new XElement("Name", "A name should be placed here"));
}
Console.WriteLine(xml);
Console.ReadLine();
}
}
请注意,XML区分大小写。在上面的示例中,您使用了两种情况:&lt; Person&gt;和&lt; person&gt;。这些两种不同的情况,因此请确保您的输入XML是一致的。
如果需要从文件加载数据,可以使用XElement.Load(filename)方法。可以使用xmlObject.Save(filename)将处理结果保存到文件中。