给定以下 XML结构: ?xml version="1.0" encoding="utf-8"?Persons Person NamePerson 1/Name Age30/Age /Person Person NamePerson 2/Name Age32/Age /Person/Persons 我想在集合中添加一个Person,我希望可以使用Xml TypeProvider A
<?xml version="1.0" encoding="utf-8"?> <Persons> <Person> <Name>Person 1</Name> <Age>30</Age> </Person> <Person> <Name>Person 2</Name> <Age>32</Age> </Person> </Persons>
我想在集合中添加一个Person,我希望可以使用Xml TypeProvider API完成.
我的方法如下:
type PersonXmlProvider = XmlProvider<""".\Persons.xml"""> let personsXml = PersonXmlProvider.GetSample() personsXml.XElement.Add(new PersonXmlProvider.Person("Person 3", 33)) personsXml.XElement.Save("Persons.xml")
怎么了:
该人员被添加到xml集合并写入该文件.
意外:
但是编码是不正确的,因为XML-Tags被编码为& lt;和& gt;分别代替<和>.
我错过了什么?
文档说UTF-8是默认值.
更新
产生的XML
<?xml version="1.0" encoding="utf-8"?> <Persons> <Person> <Name>Person 1</Name> <Age>30</Age> </Person> <Person> <Name>Person 2</Name> <Age>32</Age> </Person><Person> <Name>Person 3</Name> <Age>33</Age> </Person> </Persons>方法XElement.Add(content:obj)接受内容对象.
PersonXmlProvider.Person.ToString将类型序列化为XML,并将其作为文本节点添加到主文档中.
因此,在序列化时,文本节点将被转义,您将在输出中看到XML实体.
附:
解决方案是一直使用XElement.
let person = new PersonXmlProvider.Person("Person 3", 33) personsXml.XElement.Add(person.XElement)