在替換字符串如何寫的XPath表達式爲:xml文檔
<script src="../../Scripts/ex.js"></script>
將匹配src值(../../Scripts/ex.js
)。因爲我想用其他字符串來替代../../Scripts
。
在替換字符串如何寫的XPath表達式爲:xml文檔
<script src="../../Scripts/ex.js"></script>
將匹配src值(../../Scripts/ex.js
)。因爲我想用其他字符串來替代../../Scripts
。
我知道你說你想要一個XPath表達式,但簡單的字符串替換呢?
例如
string s = "<script src=\"../../Scripts/ex.js\"></script>";
string newS = s.Replace("../../Scripts", "../../Scripts2"); // Or whatever you want to replace it with
OP想從* XML *文件中替換* xxxxx *字符串。 – adatapost
是的,我明白,但有問題的XML文檔看起來像一個ASP.NET(或Razor)頁面。我只是提出解決問題的不同方式! –
您還可以使用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到XML
你可以用下面的代碼去。
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";
}
你用另一個字符串's替換''src',而不是'script'的src –
這種方式不會替代源文檔中的'src',結果只會是新的字符串實例,我假設OP想要替換這個'src'實際文檔不能獲取修改後的字符串。 – user854301
現在你只替換第一個'script',但我認爲你只應該在src'屬性中修改腳本中擁有'../../ Scripts/ex.js'的腳本,我認爲應該對所有的事件... – user854301
的LINQ to XML要js文件的添加 「版本」
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");
}
做什麼? – RredCat
我只想選擇所有腳本標記並替換那裏的src值 –
請顯示* XML *標記。 – adatapost