1

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

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

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

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

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

4

3 回答 3

2

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

于 2015-10-01T14:32:44.093 回答
0

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

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

于 2015-10-01T14:02:22.213 回答
0

将 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);
        }
   }
于 2022-01-17T17:35:49.953 回答