C# 从对象动态创建Xml
这里我有一个动态创建xml文件的场景,它应该是可序列化的。xml类似于:C# 从对象动态创建Xml,c#,asp.net,xml,serialization,C#,Asp.net,Xml,Serialization,这里我有一个动态创建xml文件的场景,它应该是可序列化的。xml类似于: <person> <personaldata> <name>gopi</name> <lastname>ch</lastname> </personaladata> <Educationaladata> <Graduation>b.tech<
<person>
<personaldata>
<name>gopi</name>
<lastname>ch</lastname>
</personaladata>
<Educationaladata>
<Graduation>b.tech</graduation>
<designation>Engineer</designation>
</educationaldata>
</person>
我的问题是我必须从Xml中读取特定数据,并将特定数据更新为Xml。我只想读取个人数据
当我更新时,更新应该只应用于个人数据
而不是其他数据-
var xml = XDocument.Load("xml path");
var personaldata = xml.Descendents("personaldata").FirstOrDefault();
if (data != null)
{
foreach (var t in data.Descendants())
{
t.Value = "test";
}
}
类似于-
var xml = XDocument.Load("xml path");
var personaldata = xml.Descendents("personaldata").FirstOrDefault();
if (data != null)
{
foreach (var t in data.Descendants())
{
t.Value = "test";
}
}
如果所有XML中的第一个无效,则所有节点都应与其结束标记匹配。考虑到你的人
类看起来是这样的:-
public class Person
{
public string name { get; set; }
public string lastname { get; set; }
public string Graduation { get; set; }
public string designation { get; set; }
}
使用LINQ to XML
,您可以轻松地执行此操作:-
Xdocument = XDocument.Load("XMLFilePath");
List<Person> persons = (from person in xdoc.Descendants("person")
let personaldata = person.Element("personaldata")
let Educationaladata = person.Element("Educationaladata")
select new Person
{
name = (string)personaldata.Element("name"),
lastname = (string)personaldata.Element("lastname"),
Graduation = (string)Educationaladata.Element("Graduation"),
designation = (string)Educationaladata.Element("designation")
}).ToList();
Xdocument=Xdocument.Load(“XMLFilePath”);
列表人员=(源于xdoc.后代中的人员(“人员”)
让personaldata=person.Element(“personaldata”)
让Educationaladata=person.Element(“Educationaladata”)
选择新人
{
名称=(字符串)personaldata.Element(“名称”),
lastname=(字符串)personaldata.Element(“lastname”),
毕业=(字符串)Educationaladata.Element(“毕业”),
名称=(字符串)教育数据元素(“名称”)
}).ToList();
第一个XML无效,所有节点都应与其结束标记匹配。考虑到你的人
类看起来是这样的:-
public class Person
{
public string name { get; set; }
public string lastname { get; set; }
public string Graduation { get; set; }
public string designation { get; set; }
}
使用LINQ to XML
,您可以轻松地执行此操作:-
Xdocument = XDocument.Load("XMLFilePath");
List<Person> persons = (from person in xdoc.Descendants("person")
let personaldata = person.Element("personaldata")
let Educationaladata = person.Element("Educationaladata")
select new Person
{
name = (string)personaldata.Element("name"),
lastname = (string)personaldata.Element("lastname"),
Graduation = (string)Educationaladata.Element("Graduation"),
designation = (string)Educationaladata.Element("designation")
}).ToList();
Xdocument=Xdocument.Load(“XMLFilePath”);
列表人员=(源于xdoc.后代中的人员(“人员”)
让personaldata=person.Element(“personaldata”)
让Educationaladata=person.Element(“Educationaladata”)
选择新人
{
名称=(字符串)personaldata.Element(“名称”),
lastname=(字符串)personaldata.Element(“lastname”),
毕业=(字符串)Educationaladata.Element(“毕业”),
名称=(字符串)教育数据元素(“名称”)
}).ToList();
试试xml linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string name = "gopi";
string lastname = "ch";
string graduation = "b.tech";
string designation = "Engineer";
XElement personalData = new XElement("person", new XElement[] {
new XElement("personaldata", new XElement[] {
new XElement("name", name),
new XElement("lastname", lastname)
}),
new XElement("Educationadata", new XElement[] {
new XElement("Graduation", graduation),
new XElement("designation", designation)
})
});
}
}
}
试试xml linq
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string name = "gopi";
string lastname = "ch";
string graduation = "b.tech";
string designation = "Engineer";
XElement personalData = new XElement("person", new XElement[] {
new XElement("personaldata", new XElement[] {
new XElement("name", name),
new XElement("lastname", lastname)
}),
new XElement("Educationadata", new XElement[] {
new XElement("Graduation", graduation),
new XElement("designation", designation)
})
});
}
}
}
使用XDocument
加载xml,然后使用XDocument
ssubgent
方法访问personaldata
。此外,发布的xml无效。使用XDocument
加载xml,然后使用XDocument
ssubgent
方法访问personaldata
。另外,发布的xml无效。这也是一种方法,但文件操作会影响性能,但谢谢Response@Gopikrishnach-那样的话,我不太明白你的问题。我以为您想从XML检索数据,但似乎您想创建一个XML文件?这也是一种方法,但文件操作会影响性能,谢谢Response@Gopikrishnach-那样的话,我不太明白你的问题。我以为你想从XML中检索数据,但似乎你想创建一个XML文件?谢谢你的响应谢谢你的响应