UWP c#xdocument将XElement添加到Root

时间:2017-11-30 21:41:08

标签: c# uwp linq-to-xml

我在整个项目中都使用过此代码,现在已经有更新已停止工作。我在网上找不到任何东西,这是我想要获取XML的格式

   <?xml version="1.0" encoding="utf-8" ?>
    <CATALOG>
      <ITEM>
        <UIElementIndex>GRID</UIElementIndex>
        <Left>0</Left>
        <Top>0</Top>
        <Width>595</Width>
        <Height>60</Height>
        <Name>Header</Name>
        <PlaceHolder></PlaceHolder>
        <R>170</R>
        <G>170</G>
        <B>170</B>
      </ITEM>
    </CATALOG>

我一直在使用这段代码,我做错了什么

    using (var stream = await PDFCRFileReader.Instance.MainFile.OpenStreamForWriteAsync())
    {
        foreach (PDFCRElement element in PDFCRFileReader.Instance.documentElements)
        {
            XDocument document = XDocument.Load(stream);

            XElement xmlElemnt = new XElement("ITEM",
            new XAttribute("ID", "NIT " + element.Name + ((element.Left * element.Top) * element.Width).ToString()),
            new XElement("UIElementIndex", element.UIElementIndex),
            new XElement("Left", element.Left),
            new XElement("Top", element.Top),
            new XElement("Width", element.Width),
            new XElement("Height", element.Height),
            new XElement("Name", element.Name),
            new XElement("PlaceholderText", element.PlaceholderText),
            new XElement("R", element.R),
            new XElement("B", element.B),
            new XElement("G", element.G));

            document.Root.Element("CATALOG").Add(xmlElemnt);

            document.Save(stream);
            var dialog = new MessageDialog("FIle Saved!", "FILE SAVE STATUS");
            await dialog.ShowAsync();
        }
        stream.Flush();
    }

我收到了错误,昨天没有任何意义

  

System.NullReferenceException:'对象引用未设置为   一个对象的实例。'

1 个答案:

答案 0 :(得分:0)

问题是因为Root元素&#34; CATALOG&#34;无法找到哪个提出这个问题。我使用以下代码然后发现结果为null:

    var root = document.Root;
    var cataroot = root.Element("CATALOG");

要从您自己的代码中解决此问题,请直接使用以下内容:

    document.Root.Add(xmlElemnt);

也许您可以向here报告/咨询。也许该API中的规则已经更改。顺便说一句,我认为这种变化是合理的。这里的根已经是CATALOG,root.Element(&#34; CATALOG&#34;)正试图从根目录中找到CATALOG节点。