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

时间:2016-02-23 20:44:33

标签: c# xml xml-parsing

说我有以下xml:

<div class=" product-addon product-addon-extra-tip">
  <p class="form-row form-row-wide addon-wrap-2004-extra-tip-0-0">
    <label>
      <input type="radio" class="addon addon-radio" name="addon-2004-extra-tip-0[]" data-raw-price="2" data-price="2" value="2">$2 (<span class="amount">$2.00</span>)</label>
  </p>
  <p class="form-row form-row-wide addon-wrap-2004-extra-tip-0-1">
    <label>
      <input type="radio" class="addon addon-radio" name="addon-2004-extra-tip-0[]" data-raw-price="5" data-price="5" value="5">$5 (<span class="amount">$5.00</span>)</label>
  </p>
</div>

我如何对此进行去学习,但将所有文字都包含在&lt;样品&gt;仍然是一个字符串?我不想解析Sample

的内容
<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; }
}

1 个答案:

答案 0 :(得分:1)

您可能希望将Schema加载到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;

使用debugging来检查节点的实际值,以获得正确的字符串作为输出。

列表示例:

        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. 
        }