Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用xml标记包装文本的最佳方式是什么?_C#_.net_Xml - Fatal编程技术网

C# 用xml标记包装文本的最佳方式是什么?

C# 用xml标记包装文本的最佳方式是什么?,c#,.net,xml,C#,.net,Xml,我试图在C#中使用正则表达式匹配xml文档中的一个节,并将该节包装在标记中 例如,我有以下部分: <intro> <p>this is the first section of content</p> <p> this is another</p> </intro> 谢谢 我建议使用System.XML和XPath——我不认为XML被认为是一种类似于HTML的常规语言,在试图用正则表达式解析XML时会出现问

我试图在C#中使用正则表达式匹配xml文档中的一个节,并将该节包装在标记中

例如,我有以下部分:

<intro>
    <p>this is the first section of content</p>
    <p> this is another</p>
</intro>

谢谢

我建议使用System.XML和XPath——我不认为XML被认为是一种类似于HTML的常规语言,在试图用正则表达式解析XML时会出现问题

使用类似

XMLDocument doc = new XMLDocument();
doc.Load("Path to your xml document");

享受吧

我不建议将正则表达式用于此任务。相反,您可以使用LINQ到XML来实现。例如,以下是如何将一些标记包装到新标记中:

XDocument doc = XDocument.Load("input.xml");
var section = doc.Root.Elements("p");
doc.Root.ReplaceAll(new XElement("bodyText", section));
Console.WriteLine(doc.ToString()); 
结果:

<intro>
  <bodyText>
    <p>this is the first section of content</p>
    <p> this is another</p>
  </bodyText>
</intro>

这是内容的第一部分

这是另一个问题


我假设您的实际文档与您发布的示例有很大差异,因此代码需要进行一些调整以满足您的要求,但是,如果您阅读了文档,您应该能够做您想做的事情。

强制性链接:似乎您可能需要XSLT。您使用的是.NET的哪个版本?我使用3.5,我使用XSLT做一些事情,我可能会用它来做这件事,我只是希望找到一个快速的C#解决方案,这样我就可以花更多的时间用XSLT而不是组织代码来编写表示代码。虽然我同意这种方法,但我认为这些代码实际上并不能满足OP的要求。@hemp:是的,我并不是说他可以盲目地复制并粘贴这些代码到他的项目中,他的所有问题都会得到解决,但希望这足够作为一个开始的提示。我再次阅读并亲自尝试了,我错了-你的代码完全符合他的要求。很抱歉
XDocument doc = XDocument.Load("input.xml");
var section = doc.Root.Elements("p");
doc.Root.ReplaceAll(new XElement("bodyText", section));
Console.WriteLine(doc.ToString()); 
<intro>
  <bodyText>
    <p>this is the first section of content</p>
    <p> this is another</p>
  </bodyText>
</intro>