XAMARIN表单项目的System.XML

本文关键字:System XML 项目 表单 XAMARIN | 更新日期: 2023-09-27 18:15:34

我试图使用XmlDocument类**和**XmlDocument .Load(..)函数关于XAMARIN的便携项目。与visual studio社区形成可移植的解决方案。

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

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

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

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

XAMARIN表单项目的System.XML

PCL不支持XmlDocument。您可以使用System.Xml.Linq.XDocument

XmlDocument类不能在PCL库中使用,这可以在它的文档页面Version Information下看到。(与XmlDictionary类的版本信息部分相比—注意该类如何具有可移植类库,而XmlDocument没有)

如果你想使用XmlDocument,你必须创建一个依赖服务,并在Android和iOS版本下分别实现它。

我毫不费力地将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);
        }
   }