C# – XML – 将某个元素的内部xml视为字符串
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C# – XML – 将某个元素的内部xml视为字符串,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2315字,纯文字阅读大概需要4分钟。
内容图文
![C# – XML – 将某个元素的内部xml视为字符串](/upload/InfoBanner/zyjiaocheng/758/567d77a0e678471d9dd71d356d636513.jpg)
我有以下XML:
<Plan>
<Error>0</Error>
<Description>1</Description>
<Document>
<ObjectID>06098INF1761320</ObjectID>
<ced>109340336</ced>
<abstract>DAVID STEVENSON</abstract>
<ced_a />
<NAM_REC />
<ced_ap2 />
</Document>
</Plan>
我用它反序列化它:
[XmlRoot("Plan")]
public class EPlan
{
[XmlElement("Error")]
public string Error { get; set; }
[XmlElement("Description")]
public string Description { get; set; }
[XmlElement("Document")]
public List<EDocument> Documents { get; set; }
}
public class EDocument
{
[XmlText]
public string Document { get; set; }
}
问题是我希望元素“Document”将其内部XML包含为单个字符串,我的意思是,该对象应该具有以下值:
obj.Error = "0";
obj.Description = "1";
obj.Documents[0].Document = "<ObjectID>06098INF1761320</ObjectID><ced>109340336</ced><abstract>DAVID STEVENSON</abstract><ced_a /><NAM_REC /><ced_ap2 />";
但我之前提到的方式仍然是检索NULL“Document”属性.
是否有可能实现我想要的行为?任何帮助,将不胜感激.
解决方法:
XmlText需要一个文本节点,但你拥有的实际上是元素节点.我不知道是否有直接的方法可以做到这一点,但你可以有一个XmlAnyElement节点来收集反序列化的结果,然后你将它们合并到一个字符串中,如果这是你需要的,如下面的例子所示.
[XmlRoot("Plan")]
public class EPlan
{
[XmlElement("Error")]
public string Error { get; set; }
[XmlElement("Description")]
public string Description { get; set; }
[XmlElement("Document")]
public List<EDocument> Documents { get; set; }
}
[XmlType]
public class EDocument
{
private string document;
[XmlAnyElement]
[EditorBrowsable(EditorBrowsableState.Never)]
public XmlElement[] DocumentNodes { get; set; }
[XmlIgnore]
public string Document
{
get
{
if (this.document == null)
{
StringBuilder sb = new StringBuilder();
foreach (var node in this.DocumentNodes)
{
sb.Append(node.OuterXml);
}
this.document = sb.ToString();
}
return this.document;
}
}
}
static void Test()
{
string xml = @"<Plan>
<Error>0</Error>
<Description>1</Description>
<Document>
<ObjectID>06098INF1761320</ObjectID>
<ced>109340336</ced>
<abstract>DAVID STEVENSON</abstract>
<ced_a />
<NAM_REC />
<ced_ap2 />
</Document>
<Document>
<ObjectID>id2</ObjectID>
<ced>ced2</ced>
<abstract>abstract2</abstract>
<ced_a />
<NAM_REC />
<ced_ap2 />
</Document>
</Plan>";
XmlSerializer xs = new XmlSerializer(typeof(EPlan));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xml));
EPlan obj = xs.Deserialize(ms) as EPlan;
Console.WriteLine(obj.Documents[0].Document);
}
内容总结
以上是互联网集市为您收集整理的C# – XML – 将某个元素的内部xml视为字符串全部内容,希望文章能够帮你解决C# – XML – 将某个元素的内部xml视为字符串所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。