<result>
<relatedProducts>
<item>
<id></id>
<name></name>
<text></text>
</item>
<item>
<id></id>
<name></name>
<text></text>
</item>
<item>
<id></id>
<name></name>
<text></text>
</item>
...
</relatedProducts>
<item>
<id></id>
<name></name>
<intro></intro>
<detail></detail>
</item>
<item>
<id></id>
<name></name>
<intro></intro>
<detail></detail>
</item>
...
</result>
这是我要使用的 xml 文件的简化 XML 结构。
节点文本中可能有网站网址,例如
<text>...href="something.com/default.aspx?id=3"...</text>
<detail>...href="something.com/default.aspx?id=25"...</detail>
我想要的是在 C# 中循环遍历此 xml 文档中的所有节点并检查 URL 链接,然后根据该链接中的 id 更改链接。例如,
我使用正则表达式来检查我看到此 URL 符合模式的每个节点值
<text>...href="something.com/default.aspx?id=3"...</text>
我想将其更改为
<text>...href="somethingelse.com/query.aspx?rid=3"...</text>
最后,返回带有正确 URL 的整个 xml 文档。
最佳答案
XDocument doc = XDocument.Load(path);
foreach(var element in doc.Descendants())
{
element.Value = ReplaceUrl(element.Value);
}
doc.Save(path);
我会让您实现 ReplaceUrl
方法,因为我不知道您到底需要做什么...只是一些一般性建议:
- 您可以使用正则表达式从元素文本中提取 URL(请参阅 this question)
- 解析和修改 URL 的最简单方法可能是使用
UriBuilder
类,它允许您访问 URL 的各个组成部分(方案、主机、路径、查询字符串...)
关于c# - 如何循环遍历XML中的所有节点并根据C#中的值更改节点值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5980882/