WP8创建xml文件c#

时间:2014-04-16 06:22:02

标签: c# xml windows-phone linq-to-xml xelement

我正在尝试创建如下所示的xml文件

        <IMEI>ABCD</IMEI>
        <Manufacturer>Nokia</Manufacturer>
        <Model>Lumia 525</Model>
        <Items>
           <Item>
                <Name>Contact</Name>
                <Size>
                    <Value>123</Value>
                    <Type>KB</Type>
                </Size>
                <MD5>78sd8f6sd6fsdf8sdbs5f78svbfsd576s</ MD5>
                <Desc>Contact is added</ Desc >
           </Item>
        </Items>

我尝试过这样的事情

doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"));

doc.Add(new XElement(("IMEI"), "ABCD"));
doc.Add(new XElement("Manufacturer"), "Nokia");
doc.Add(new XElement("Model"), "Lumia 525");
var contactsElement = new XElement("Item",
                        new XElement("Name", "Contact"),
                        new XElement("Size",
                            new XElement("Value", "123"),
                            new XElement("Type", "KB")),
                       new XElement("MD5", "78sd8f6sd6fsdf8sdbs5f78svbfsd576s"),
                       new XElement("Desc", "Contact File"));
var mainNode = new XElement("Items", new XElement(contactsElement));
doc.Root.Add(mainNode);

但没有得到正确的文件。我还想在Item节点中附加新的Items。当我拿到新物品时如何追加?

1 个答案:

答案 0 :(得分:0)

  1. 您发布的XML无效。它应该具有单个根元素才能成为有效的XML。
  2. 您的代码添加新元素的方式是错误的。它将添加两个节点而不是一个节点:一个空的xml元素节点和一个文本节点。
  3. 您可以尝试这种方式生成格式正确的XML:

    doc = new XDocument(new XDeclaration("1.0", "UTF-8", "yes"),
                                            new XElement("Root"));
    doc.Root.Add(new XElement("IMEI", "ABCD"));
    doc.Root.Add(new XElement("Manufacturer", "Nokia"));
    doc.Root.Add(new XElement("Model", "Lumia 525"));
    var contactsElement = new XElement("Item",
                                        new XElement("Name", "Contact"),
                                        new XElement("Size",
                                            new XElement("Value", "123"),
                                            new XElement("Type", "KB")),
                                        new XElement("MD5", "78sd8f6sd6fsdf8sdbs5f78svbfsd576s"),
                                        new XElement("Desc", "Contact File"));
    var mainNode = new XElement("Items", new XElement(contactsElement));
    doc.Root.Add(mainNode);
    

    稍后在Item元素中添加新的Items

    //get existing <Items> element
    var items = doc.Root.Element("Items");
    //add new <Item> to <Items>
    items.Add(XElement.Parse(newContactsElement));
    //then save the XDocument back replacing previously saved XML