<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文档。
答案 0 :(得分:5)
XDocument doc = XDocument.Load(path);
foreach(var element in doc.Descendants())
{
element.Value = ReplaceUrl(element.Value);
}
doc.Save(path);
我会让你实施ReplaceUrl
方法,因为我不确切知道你需要做什么......只是一些一般的建议:
UriBuilder
类,它允许您访问URL的各个组件(方案,主机,路径,查询字符串......)答案 1 :(得分:1)
Dim xmlDoc As New XmlDocument
Dim xmlNodeList As XmlNodeList
Dim xmlNode As XmlNode
xmlDoc.LoadXml(strXML)
'xmlNodeList = xmlDoc.GetElementsByTagName("text")'Do this if its a particular tag
xmlNodeList = xmlDoc.GetElementsByTagName("result")'Or just put the root tag, in my
'case result was the root tag
For Each xmlNode In xmlNodeList
xmlNode.InnerText = "new text"
Next
搜索特定标记,然后进行替换。