12 December 2010

XElement vs XmlDocument

At bygge et XML dokument op via XmlDocument kan godt være lidt langhåret og ikke særlig læsevenligt. Og man kan godt blive lidt træt af AppendChild og InnerText etc.

Siden .NET 3.5 har man kunne bruge XElement til det samme

Hvis man ønsker at bygge dette XML
<RelatedNodes>
    <RelatedNode>
        <NodeId>151</NodeId>
        <MatchCount>2</MatchCount>
    </RelatedNode>
</RelatedNodes>

Via XmlDocument
XmlDocument doc = new XmlDocument();
doc.LoadXml("<RelatedNodes/>");
foreach (RelatedSearcherResultItem resultItem in search) {
    XmlNode relatedNode = doc.FirstChild.AppendChild(doc.CreateElement("RelatedNode"));
    XmlNode nodeIdNode = relatedNode.AppendChild(doc.CreateElement("NodeId"));
    XmlNode matchCountNode = relatedNode.AppendChild(doc.CreateElement("MatchCount"));
    nodeIdNode.InnerText = resultItem.NodeId.ToString();
    matchCountNode.InnerText = resultItem.MatchCount.ToString(); }

Via XElement
XElement xdoc = new XElement("RelatedNodes"); foreach (RelatedSearcherResultItem resultItem in search) {
    xdoc.Add(
       new XElement("RelatedNode",
            new XElement("NodeId", resultItem.NodeId),
            new XElement("MatchCount", resultItem.MatchCount)
       )
    );

}

No comments: