如何在没有包含元素的情况下使用C#创建XML?

时间:2012-07-23 17:11:56

标签: c# linq-to-xml

我使用以下内容:

XElement select = new XElement("select");
XElement optGroup = null;

if (topics.Count() > 0) {
    optGroup = new XElement("optgroup", new XAttribute("label", "Admin"));
    optGroup.Add(new XElement("option", new XAttribute("value", "99"), new XText("Select Topic")));
    optGroup.Add(new XElement("option", new XAttribute("value", "00"), new XText("All Topics")));
    select.Add(optGroup);
    foreach (var topic in topics) {
        // skip root topic
        if (!topic.RowKey.EndsWith("0000")) {
            // optgroup
            if (topic.RowKey.EndsWith("00")) {
                optGroup = new XElement("optgroup", new XAttribute("label", topic.Title));
                select.Add(optGroup);
            }
                // option
            else if (optGroup != null) {
                optGroup.Add(new XElement("option", new XAttribute("value", topic.RowKey), new XText(topic.Title)));
            }
        }
    }
} else {
    optGroup = new XElement("optgroup", new XAttribute("label", "Admin"));
    optGroup.Add(new XElement("option", new XAttribute("value", "88"), new XText("No Topics")));
}                     
return (select.ToString());

它处理变量中的行并使用数据为HTML创建<select> ... </select>元素。

然而,我需要的是<select>的内容,而不是开场<select>和结束</select>元素。有什么方法可以让它只返回内容而不是外部<select>

2 个答案:

答案 0 :(得分:1)

只需从结果中修剪出你不想要的东西。

return (select.ToString().Replace("<select>","").Replace("</select>",""));

答案 1 :(得分:1)

添加

using System.Xml.XPath;

访问该命名空间中Extensions类中定义的扩展方法,以获取XPathNavigator及其InnerXml属性:

string inner = select.CreateNavigator().InnerXml;