我正在尝试在C#中使用Regex来匹配xml文档中的一个部分,并将该部分包装在一个标记内。
例如,我有这一部分:
<intro>
<p>this is the first section of content</p>
<p> this is another</p>
</intro>
我希望它看起来像这样:
<intro>
<bodyText>
<p> this is asdf</p>
<p> yada yada </p>
</bodyText>
</intro>
有什么想法吗?
我正在考虑在C#中使用XPath类,或者只是通过阅读文档并使用Regex。我似乎无法想出任何一种方式。
这是一次尝试:
StreamReader reader = new StreamReader(filePath);
string content = reader.ReadToEnd();
reader.Close();
/* The regex stuff would go here */
StreamWriter writer = new StreamWriter(filePath);
writer.Write(content);
writer.Close();
}
谢谢!
答案 0 :(得分:6)
我不推荐此任务的正则表达式。相反,您可以使用LINQ to 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>
我认为您的实际文档与您发布的示例有很大不同,因此代码需要进行一些调整以满足您的要求,但如果您阅读XDocument的文档,您应该能够做到您想要的。
答案 1 :(得分:1)
我建议使用System.XML和XPath - 我不认为XML被认为是类似于HTML的常规语言,在尝试使用正则表达式解析时会导致问题。
使用类似
的内容XMLDocument doc = new XMLDocument();
doc.Load("Path to your xml document");
享受!