gpt4 book ai didi

f# - 使用 F# TypeProvider 进行 XML 操作

转载 作者:行者123 更新时间:2023-12-05 00:53:13 24 4
gpt4 key购买 nike

给定以下 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>
</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 标签被编码为 &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>&lt;Person&gt;
&lt;Name&gt;Person 3&lt;/Name&gt;
&lt;Age&gt;33&lt;/Age&gt;
&lt;/Person&gt;
</Persons>

最佳答案

方法XElement.Add(content: obj)接收一个内容对象。
PersonXmlProvider.Person.ToString将类型序列化为 XML,并将其作为文本节点添加到主文档中。

因此,当它被序列化时,文本节点被转义,您会在输出中看到 XML 实体。

附言

解决方法是使用XElement一路。

let person = new PersonXmlProvider.Person("Person 3", 33)
personsXml.XElement.Add(person.XElement)

关于f# - 使用 F# TypeProvider 进行 XML 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41595697/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com