如何不反序列化节点的内容

本文关键字:节点 何不 反序列化 | 更新日期: 2023-09-27 18:36:04

假设我有以下xml:

<Samples>
<Sample>
  <SomeStuff>
   <SomMoreStuff>.. </SomeMoreStuff>
  </SomeStuff>
</Sample>
<Sample>
  <SomeStuff>
   <SomMoreStuff>.. </SomeMoreStuff>
  </SomeStuff>
</Sample>
</Samples>

我怎样才能取消它,但让<示例>中的所有文本都保留为字符串?我不想解析示例的内容

[XmlRoot(ElementName="Samples")]
public class Samples {
    [XmlElement("Sample")]
    public string[] Items{ get; set; }
}

我想以这样的列表结束

[
  "<Sample><SomeStuff><SomMoreStuff>.. </SomeMoreStuff></SomeStuff></Sample>"
  "<Sample><SomeStuff><SomMoreStuff>.. </SomeMoreStuff></SomeStuff></Sample>"
]

如何不反序列化节点的内容

您可能希望将架构加载到 XmlDocument 类中,并从中提取内部或外部 XML 作为字符串。

一个例子可能是:

var xdoc = new XmlDocument();
xdoc.LoadXml(MySchema);
var sampleNode = xdoc.SelectNodes("//sample");
var sampleText = sampleNode.ToString();
// or
var sampleText2 = sampleNode.Item(0).OuterXml;

使用调试检查节点的实际值,以获取正确的字符串作为输出。

列表示例:

        var xdoc = new XmlDocument();
        xdoc.LoadXml(MySchema);
        var sampleNode = xdoc.SelectNodes("//sample");
        var sampleList = new List<string>();
        foreach (XmlNode item in sampleNode)
        {
            sampleList.Add(item.OuterXml); // or InnerXml - whatever value it is you need. 
        }