【问题标题】:System.XML on XAMARIN forms projectXAMARIN 表单项目上的 System.XML
【发布时间】:2015-10-01 13:11:16
【问题描述】:

我正在尝试使用 XmlDocument 类 ** 和 **XmlDocument .Load(..) 函数 在 Visual Studio 社区的 XAMARIN.Forms Portable 解决方案的 Portable Project 上。

编译器说“找不到类型或命名空间名称'XmlDocument'(您是否缺少 using 指令或程序集引用?”

如果我进入 References,它不允许我添加 System.XML 命名空间(没有),如果我浏览文件并转到 system.xml.dll,它说我无法添加该文件,因为该组件已被构建系统自动引用。

我能做些什么来使用这个类??

注意: 在 .Droid 和 .IOS 项目中有一个对 System.xml 的引用,在这些项目中我可以使用 XmlDocument 类。

【问题讨论】:

    标签: c# xamarin system.xml


    【解决方案1】:

    PCL 不支持XmlDocument。你可以改用System.Xml.Linq.XDocument

    【讨论】:

      【解决方案2】:

      XmlDocument 类不能在 PCL 库中使用,您可以在其documentation page under Version Information 中看到。 (比较 XmlDictionary 类的版本信息部分 - 请注意此类如何提供可移植类库而 XmlDocument 没有。)

      如果您想使用 XmlDocument,您必须创建一个 dependency service 并在 Android 和 iOS 版本下分别实现它。

      【讨论】:

        【解决方案3】:

        将 XML 添加到我的项目中没有问题:

        using System.Xml;
        using System.Xml.Serialization;
        
           public string ToXML(Object oObject)
           {
              XmlDocument xmlDoc = new XmlDocument();
              XmlSerializer xmlSerializer = new XmlSerializer(oObject.GetType());
              using (MemoryStream xmlStream = new MemoryStream())
              {
                 xmlSerializer.Serialize(xmlStream, oObject);
                 xmlStream.Position = 0;
                 xmlDoc.Load(xmlStream);
                 return xmlDoc.InnerXml;
              }
           }
        

        之后就可以共享 XML 字符串了:

           public MvxCommand ShareWaypoints => new MvxCommand(ShareWaypointsAsync);
           public async void ShareWaypointsAsync()
           {
                try
                {
                   string strXML = "";
                   foreach (var wp in waypoints)
                   {
                      strXML += ToXML(wp); 
                   }
                   if (strXML != "")
                      await Share.RequestAsync(new ShareTextRequest
                                               {
                                                  Text = strXML,
                                                  Title = "Share Text"
                                               });
                }
                catch (Exception ex)
                {
                    await _userDialogs.AlertAsync(ex.Message);
                }
           }
        

        【讨论】:

          猜你喜欢
          • 2019-09-19
          • 1970-01-01
          • 1970-01-01
          • 2017-12-25
          • 1970-01-01
          • 2020-02-22
          • 1970-01-01
          • 2022-01-21
          • 2019-11-12
          相关资源
          最近更新 更多