我正在尝试从 XML 文档中读取 PackageReferences。
我的 xml 文件如下所示:
<Project>
<ItemGroup>
<PackageReference Update="PackageName" Version="PackageVersion" />
</ItemGroup>
</Project>
AND
<Project xmlns="http://url/">
<ItemGroup>
<PackageReference Update="PackageName" Version="PackageVersion" />
</ItemGroup>
</Project>
这是我的反序列化代码:
var xmlResolver = new XmlSecureResolver(new XmlUrlResolver(), new System.Security.PermissionSet(System.Security.Permissions.PermissionState.None));
using (var sr = new StringReader(this.FileSystem.File.ReadAllText(path)))
{
var xmlReaderSettings = new XmlReaderSettings { XmlResolver = xmlResolver };
return (Project)new XmlSerializer(typeof(Project)).Deserialize(XmlReader.Create(sr, xmlReaderSettings));
}
这是项目部分类:
{
using System;
using System.Xml.Serialization;
[Serializable]
public partial class Project
{
private ProjectItemGroup[] itemGroupField;
[XmlElement("ItemGroup")]
public ProjectItemGroup[] ItemGroup
{
//...
}
}
[Serializable]
public partial class ProjectItemGroup
{
private Package[] packageReferenceField;
[XmlElement("PackageReference")]
public Package[] PackageReference
{
get
{
return this.packageReferenceField;
}
set
{
this.packageReferenceField = value;
}
}
}
}
我的反序列化代码可以毫无问题地读取第一个 xml 文件,但在第二个文件上崩溃xmlns="https://url/"
.
Error:
System.InvalidOperationException: There is an error in XML document (2, 2). ---> System.InvalidOperationException: <Project xmlns='http://url/'> was not expected.
如何修改此程序以安全地忽略(或以某种方式处理)xml 命名空间?