gpt4 book ai didi

c# - 如何在 XML 反序列化期间将 XML 字符串保留为字符串字段

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

我有一个 XML 输入字符串,想将它反序列化为一个对象,该对象部分保留原始 XML。

<SetProfile>
<sessionId>A81D83BC-09A0-4E32-B440-0000033D7AAD</sessionId>
<profileDataXml>
<ArrayOfProfileItem>
<ProfileItem>
<Name>Pulse</Name>
<Value>80</Value>
</ProfileItem>
<ProfileItem>
<Name>BloodPresure</Name>
<Value>120</Value>
</ProfileItem>
</ArrayOfProfileItem>
</profileDataXml>
</SetProfile>

类定义:

public class SetProfile
{
public Guid sessionId;
public string profileDataXml;
}

我希望反序列化语法看起来像

string inputXML = "..."; // the above XML
XmlSerializer xs = new XmlSerializer(typeof(SetProfile));
using (TextReader reader = new StringReader(inputXML))
{
SetProfile obj = (SetProfile)xs.Deserialize(reader);
// use obj ....
}

但 XMLSerializer 将抛出异常,并且不会将 的后代输出到原始 XML 字符串中的“profileDataXml”字段。

有没有办法实现这样的反序列化?

最佳答案

如果您想将其反序列化为 XML,请使用 XML 类型(XElementXmlElement 都可以)- 请参见下面的代码。

public class StackOverflow_11234676
{
const string XML = @"<SetProfile>
<sessionId>A81D83BC-09A0-4E32-B440-0000033D7AAD</sessionId>
<profileDataXml>
<ArrayOfProfileItem>
<ProfileItem>
<Name>Pulse</Name>
<Value>80</Value>
</ProfileItem>
<ProfileItem>
<Name>BloodPresure</Name>
<Value>120</Value>
</ProfileItem>
</ArrayOfProfileItem>
</profileDataXml>
</SetProfile>";

public class SetProfile
{
public Guid sessionId;
public XElement profileDataXml;
}
public static void Test()
{
string inputXML = XML;
XmlSerializer xs = new XmlSerializer(typeof(SetProfile));
using (TextReader reader = new StringReader(inputXML))
{
SetProfile obj = (SetProfile)xs.Deserialize(reader);
Console.WriteLine(obj.profileDataXml);
}
}
}

关于c# - 如何在 XML 反序列化期间将 XML 字符串保留为字符串字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11234676/

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