XDocument создать XElement с комментарием XML

1

Я пытался выбрать некоторые XML-комментарии так:

XDocument doc = XDocument.Load(args[0]);    
var comments = from node in doc.Elements().DescendantNodesAndSelf()
                            where node.NodeType == XmlNodeType.Comment
                            select node as XComment;

С помощью этого решения я получаю все комментарии xml файла, но я хочу выбрать только те комментарии и создать XElement с ним:

<Connections>
     ...
    <!-- START Individual Account Authentication -->
    <!--<authentication mode="None"/>
    <roleManager enabled="false"/>
    <profile enabled="false"/>-->
    <!-- END Individual Account Authentication -->
     ...
</Connections>

Любые решения? : S

Теги:
linq-to-xml

1 ответ

1
Лучший ответ

Вот пример:

        XDocument doc = XDocument.Load("input.xml");
        foreach (XComment start in doc.DescendantNodes().OfType<XComment>().Where(c => c.Value.StartsWith(" START")).ToList())
        {
            XComment end = start.NodesAfterSelf().OfType<XComment>().FirstOrDefault(c => c.Value.StartsWith(" END"));
            if (end != null)
            {
                foreach (XComment comment in end.NodesBeforeSelf().OfType<XComment>().Intersect(start.NodesAfterSelf().OfType<XComment>()).ToList())
                {
                    comment.ReplaceWith(XElement.Parse("<dummy>" + comment.Value + "</dummy>").Nodes());
                }
                // if wanted/needed
                start.Remove();
                end.Remove();
            }
        }
        doc.Save("output.xml");

Это дает мне

<Connections>
  ...
  <authentication mode="None" /><roleManager enabled="false" /><profile enabled="false" />
  ...
</Connections>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню