gpt4 book ai didi

c# - 不指定 XmlRootAttribute 的 XML 反序列化

转载 作者:数据小太阳 更新时间:2023-10-29 02:50:16 26 4
gpt4 key购买 nike

这是我的 xml:

<connections total="2" >
<person>
<id>ohKiUAZWz2</id>
<first-name>ミ★нιяαℓ</first-name>
<last-name>§|-|ä|-|»♥«</last-name>
<headline>--</headline>
</person>
<person>
<id>LmgYe-Nl2a</id>
<first-name>kunal</first-name>
<last-name>b</last-name>
<headline>Student at MscIT,Surat</headline>
</person>
</connection>

来自后面的代码:

List<LinkWall> LinkWallList = new List<LinkWall>();
XmlNodeList xmlnode = doc.GetElementsByTagName("person");

foreach (XmlElement ele in xmlnode)
{

XmlRootAttribute xr = new XmlRootAttribute("person");

XmlSerializer mySerializer = new XmlSerializer(typeof(LinkWall),xr);

StringReader re = new StringReader(ele.InnerXml);

LinkWallList.Add((LinkWall)mySerializer.Deserialize(re));
}

这是我的类定义:

[XmlRoot("person")]
public class LinkWall
{
public LinkWall()
{ }

[XmlElement(ElementName = "id")]
public string id { get; set; }

[XmlElement(ElementName = "first-name")]
public string firstName { get; set; }

[XmlElement(ElementName = "last-name")]
public string lastName { get; set; }

[XmlElement(ElementName = "headline", IsNullable=true)]
public string headline { get; set; }
}

但是当我尝试反序列化时。它向我显示如下错误:{“有多个根元素。”}

指定 XmlRootAttribute 是否有任何解决方案或替代方案?

提前致谢,Milan Mendpara

最佳答案

我认为您的问题出在这一行:

StringReader re = new StringReader(ele.InnerXml);

将其更改为:

StringReader re = new StringReader(ele.OuterXml);

原因是 InnerXml 属性将返回所有子节点而不是父节点。 OuterXml 也将包含您的父节点。

即InnerXml 没有根元素(嗯,它有很多!):

<id>ohKiUAZWz2</id>
<first-name>?????al</first-name>
<last-name>§|-|ä|-|»?«</last-name>
<headline>--</headline>

OuterXml 符合预期:

<person>
<id>ohKiUAZWz2</id>
<first-name>?????al</first-name>
<last-name>§|-|ä|-|»?«</last-name>
<headline>--</headline>
</person>

也没有真正需要使用您正在使用的 XmlSerializer 构造函数。尝试:

XmlSerializer mySerializer = new XmlSerializer(typeof(LinkWall));

相反。

关于c# - 不指定 XmlRootAttribute 的 XML 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9194331/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com