繁体   English   中英

如何在包含其他元素的XElement值内添加文本?

[英]How to add text inside XElement value that contains other elements?

我有这样的XML元素:

string markup = @"<a href='#'>
                      <span>
                         outer content
                         <span>inner content</span>
                      </span>
                   </a>";

XElement elelemt = XDocument.Parse(markup).Root;

我想将括号添加到外部span ,使其变为:

<a href='#'>
    <span>
      (outer content
      <span>inner content</span>)
     </span>
</a>

我尝试通过修改Value属性来删除内部元素,并仅用文本替换它:

elelemt.Element("span").Value = "(" + elelemt.Element("span").Value + ")";

您将需要用两侧都带有文本的现有节点替换子节点。 大概是这样的:

var span = element.Element("span");

span.ReplaceNodes(
    new XText("("),
    span.Nodes(),
    new XText(")"));

如果空格必须匹配您指定的内容,它将变得有些棘手。 您必须遍历span.Nodes()才能确定在何处插入XText节点。

XElement.Parse ,存在XElement.Parse ,因此您的解析可以写为:

var element = XElement.Parse(markup);

对于可能遇到此问题的VB员工。

    Dim markup As XElement
    markup = <a href='#'>
                 <span>
                 outer content
                <span>inner content</span>
                 </span>
             </a>

    Dim newmarkup As XElement = New XElement(markup)
    newmarkup.<span>.DescendantNodes.Remove()
    newmarkup.<span>.Value = "("

    For Each el As XNode In markup.<span>.Nodes
        newmarkup.<span>.Nodes.LastOrDefault.AddAfterSelf(el)
    Next

    newmarkup.<span>.Nodes.LastOrDefault.AddAfterSelf(")")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM