替换xml文档中的字符串

时间:2012-08-29 08:04:00

标签: c# xml xpath

如何为:

编写xpath表达式
 <script src="../../Scripts/ex.js"></script>

将匹配src值(../../Scripts/ex.js)。因为我想将../../Scripts与其他字符串相关联。

4 个答案:

答案 0 :(得分:2)

您可以使用以下代码。

 TextReader tr = new StringReader(response);
    XElement xelement = XElement.Load(tr);
    var Script = xelement.Descendants("script").ToList();
    if (Script.Count() > 0)
    {
     Script.First().Attribute("src").Value = "../../Scripts/NewEXWithReplace.js";

    }

答案 1 :(得分:1)

您还可以使用HtmlAgilityPack,它允许您有用地访问属性codeplex tool

HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(@"<script src="../../Scripts/ex.js"></script>" />");

foreach (var script in doc.DocumentNode.Descendants("script"))
{

    script.Attributes["src"].Value = "loading.gif";
}

另一种方法是使用linq to xml

答案 2 :(得分:1)

LINQ to XML

var xdocument = XDocument.Load("XMLFile1.xml"); // you can use Parse or whatever
var elements = xdocument.XPathSelectElements("//script[@src='../../Scripts/ex.js']");
foreach (var element in elements)
{
  element.Attribute("src").SetValue("foo");
}

答案 3 :(得分:0)

我知道你说你想要一个XPath表达式,但是一个简单的字符串替换呢?

e.g。

string s = "<script src=\"../../Scripts/ex.js\"></script>";
string newS = s.Replace("../../Scripts", "../../Scripts2"); // Or whatever you want to replace it with