所以我正在寻找一种在XML文件中编辑单个元素描述的方法。
例如,说我有:
1 <stack id ="1">Stack1</stack>
2 <book id="EG-FE">This Book</book>
3 <book id="EG-FF">That Book</book>
4 <book id="FE-GT">Another Book</book>
5 <book id="JL-01">Invalid Book Id</book>
6 <stack id="2">Stack2</stack>
你会注意到第5行的书有一个奇怪的格式...... id的第二部分(在' - '之后)有数字,其余的都有字母。我怎样才能删除第5册id的'-01'部分(即改为:
5 <book id="JL">Valid Book Id</book>
没有修改eny其他元素? (I.E.堆栈)
以下是我正在尝试的内容:
using System.Xml.Linq
XElement books = XElement.Load("{file}");
string _Attribute;
foreach (var bookID in books.Nodes())
{
if(bookID.Attribute("book") )
{
_Attribute = bookID.Attribute("book")
if(!Regex.IsMatch(_Attribute., @"^[a-zA-Z-]+$");
{
Regex.Replace(_Attribute, @"\d", "");
}
bookID.Attribute("book") = _Attribute;
}
}
显然,这是非常错误的......关于如何修复它的任何想法?
谢谢!
我没有找到太多帮助直接处理这个问题,我试图整理的点点滴滴并没有真正帮助。
答案 0 :(得分:2)
using System.Xml.Linq
XElement books = XElement.Load("{file}");
string _Attribute;
foreach (var bookID in books.Elements("book"))
{
if(bookID.Attribute("id") != null)
{
_Attribute = bookID.Attribute("book").Value;
if(!Regex.IsMatch(_Attribute, @"-[0-9]+$"))
{
Regex.Replace(_Attribute, @"-[0-9]+$", "");
}
bookID.Attribute("id").Value = _Attribute;
}
}
未经测试以及所有常用评论。修复了一些关于Linq to XML如何工作的假设,并使正则表达式检查它是否以数字结尾并替换最终数字。
答案 1 :(得分:0)
string strHtml = "<input Type=\"Text\" Name=\"Initial Name Value\" Id=\"ID Value\" />";
XElement root = XElement.Parse(strHtml); // Carrega o Bicho...
root.SetAttributeValue("ValueA", 1); // New Attribute - Int Value
root.SetAttributeValue("ValueC", 3); // New Attribute - Int Value
root.SetAttributeValue("ValueC", null); // Remove Attribute
root.SetAttributeValue("ValueA", "New value for ValueA");
root.SetAttributeValue("Name", "New Name"); // Alterando Value propriedade recebida no Parse()
Console.WriteLine(root);