XElement el = XElement.Parse(xml)
XElement newEl = new XElement("image", "d:/1.jpg", new XAttribute("name", "1.jpg"))
el.Elements("Background").Where(e=>e.Attribute("FileName").Value=="AAA").First().Add(newEl)
Console.WriteLine(el)
这个应该是Linq to Xml吧,Linq to Sql是数据库的
/////////创建xmlstring path = Server.MapPath("App_Data/new.xml")//设置xml文件存放的目录
//使用LINQ创建xml文件的内容
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("People",
new XElement("Person",
new XAttribute(":IDCard", "22030219771012***"),
new XComment("身份z号是唯一的"),
new XElement("Name", "张三"),
new XElement("Sex", "男"),
new XElement("Old", 20)
)
)
)
doc.Save(path)//保存为new.xml文件
///////读取xml并查
string xmlFilePath = Server.MapPath("App_Data/new.xml")//xml文件存放的路径
XElement xes = XElement.Load(xmlFilePath)//加载xml文件
//查询指定名称的元素
IEnumerable<XElement> elements = from ee in xes.Elements("Person")
where ee.Element("Name").Value == "李四"
select ee
foreach (XElement xe in elements)//将查询到的元素输出
{
Response.Write(xe.Name.LocalName+":"+xe.Attribute("IDCard").Value+"<br/>")
}
////////查询指定名称的元素
string xmlFilePath = Server.MapPath("App_Data/new.xml")//xml文件存放的路径
XElement xes = XElement.Load(xmlFilePath)//加载xml文件
//查询指定名称的元素
var elements = from ee in xes.Elements("Person")
where ee.Attribute("IDCard").Value == idcard
select new
{
姓名 = ee.Element("Name").Value,
性别 = ee.Element("Sex").Value,
年龄 = ee.Element("Age").Value,
身份z号 = ee.Attribute("IDCard").Value
}
XDocument x = XDocument.Load("Version.xml", LoadOptions.SetBaseUri)var queryElementNs = "http://www.dynastech.com/xmtp/disco#update"
XElement query = x.Root.Element(XName.Get("query", queryElementNs))
if(query == null)
{
Console.WriteLine("Sorry, but the specified tag is not found.")
}
else
{
XAttribute Version = query.Attribute("version")
Console.WriteLine(Version == null ? "[ATTRIBUTE NOT FOUND]" : Version.Value)
}
主要三个问题:
x 是个xml文档,不是 xml 根元素。要定位到 xml 根元素,先定位到 Root 属性,而不是上来就去查找x.Element。
你查的xml元素“query”是带xmlns的,查找元素的时候要把命名空间带上去,用XName包含进命名空间:
XName.Get("query", queryElementNs)而不是直接使用字符串“query”,它默认不包含命名空间。
应该是
query.Attribute("version") //而不是
query.Attribute("Version")注意xml很多地方是区分大小写的。
最后就是,永远不要信任外部的数据源:你怎么可能保证xml里肯定有query这个标签?所以一定要始终判断查出来的结果是不是空。这样也方便你查错。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)