从模板文件中解析并生成xml(C#)

时间:2014-07-31 08:31:01

标签: c# xml

我有一个类似于

的模板XML
<a:Demographics>     
    <b:Id>      
        <c:IdValue></c:IdValue>      
        <c:IdScheme></c:IdScheme>      
        <c:IdType></c:IdType>     
    </b:Id>    
</a:Demographics>  

使用Visual Studio和c#,我如何解析xml,然后根据我当前的记录,将我自己的数据添加到c:IdValuec:IdSchemec:IdType,因为这些是必需的xml领域。它们在模板中留空,以便我的程序将填充它们然后需要将其保存为新的xml文件,但是一旦添加了值,这应该是直截了当的。

我愿意使用任何可以完成工作的库!

2 个答案:

答案 0 :(得分:1)

您可以使用System.Xml.Linq

加载模板

XDocument Template = XDocument.Load("Template.xml");

修改

void AddData(string elemName, string value)
    {
        XElement element = Template.Root.Descendants("elemName").First();
        element.Value = value;
    }

并保存

Template.Save("newXml.xml");

答案 1 :(得分:1)

有效的XML必须在某处具有名称空间前缀声明,我假设您的XML具有它。然后你可以使用XDocument执行类似的操作:

XDocument doc = XDocument.Load("path_to_xml_file.xml");
XNamespace a = "http://uri.for.a.prefix.com";
XNamespace b = "http://uri.for.b.prefix.com";
XNamespace c = "http://uri.for.c.prefix.com";
XElement id = doc.Descendants(a+"Demographics")
                 .First()
                 .Element(b+"Id");
id.Element(c+"IdValue").Value = "new value here";
id.Element(c+"IdScheme").Value = "new scheme here";
id.Element(c+"IdType").Value = "new type here";

doc.Save("path_to_new_xml_file.xml");