C# 通过XmlReader解析XML:将XMLElement名称读取为字符串
我在尝试解析WebDAV应用程序的响应时遇到问题。 响应的相关部分如下所示: 对于集合:C# 通过XmlReader解析XML:将XMLElement名称读取为字符串,c#,xml,serialization,webdav,C#,Xml,Serialization,Webdav,我在尝试解析WebDAV应用程序的响应时遇到问题。 响应的相关部分如下所示: 对于集合: .... <D:getlastmodified xmlns:B="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" B:dt="dateTime.rfc1123">Tue, 15 Jan 2013 15:47:30 GMT</D:getlastmodified> <D:displayn
....
<D:getlastmodified xmlns:B="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" B:dt="dateTime.rfc1123">Tue, 15 Jan 2013 15:47:30 GMT</D:getlastmodified>
<D:displayname>aaa.bc</D:displayname>
<D:resourcetype>
<D:collection />
</D:resourcetype>
<D:getcontenttype>text/html; charset=utf-8</D:getcontenttype>
....
其中,例如,对于集合,Type=“collection”
我该怎么做?对于我发布的部分,我的C#代码如下所示(但不是我想要的):
以及解析所有内容的方法:
private T ParseWebDavXml<T>(string xml)
{
using (var reader = XmlReader.Create(new StringReader(xml)))
{
var serializer = new XmlSerializer(typeof(T), "DAV:");
var result = (T)serializer.Deserialize(reader);
return result;
}
}
private T ParseWebDavXml(字符串xml)
{
使用(var reader=XmlReader.Create(newstringreader(xml)))
{
var serializer=newxmlserializer(typeof(T),“DAV:”);
var result=(T)序列化程序。反序列化(读取器);
返回结果;
}
}
您可以将ResourceType的字符串类型更改为对象类型。您还需要用XmlType属性修饰ResourceType。您可以按目标指定XmlType属性(在本例中为2)
您还需要创建两种类型:
- 一根绳子
- 一个用于收集
- 生成一个XSD和与此XSD对应的C#类:请参见
- 直接定义表,而不是字符串字段
[XmlElement("resourcetype")]
public string Type {get;set;}
[XmlRoot("prop")]
public class Prop
{
[XmlElement("creationdate")]
public string CreationDate { get; set; }
[XmlElement("getlastmodified")]
public string LastModified { get; set; }
[XmlElement("displayname")]
public string DisplayName { get; set; }
[XmlElement("resourcetype")]
public string ResourceType { get; set; }
[XmlElement("getcontenttype")]
public string ContentType { get; set; }
[XmlElement("getcontentlength")]
public string ContentLength { get; set; }
[XmlElement("getetag")]
public string ETag { get; set; }
[XmlElement("imagewidth")]
public string ImageWidth { get; set; }
[XmlElement("imageheight")]
public string ImageHeight { get; set; }
[XmlElement("thumbnailuri")]
public string TumbnailUri { get; set; }
}
[XmlRoot("resourcetype")]
public class ResourceType
{
[XmlElement("collection")] // TODO
public string Collection { get; set; }
}
private T ParseWebDavXml<T>(string xml)
{
using (var reader = XmlReader.Create(new StringReader(xml)))
{
var serializer = new XmlSerializer(typeof(T), "DAV:");
var result = (T)serializer.Deserialize(reader);
return result;
}
}