[英]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.