我使用以下代码
创建XML文档For Each cust As Customer In Customers
XDoc = <?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Customers>
<Customer>
<Name>Mike</Name>
<Age>0</Age>
</Customer>
</Customers>
Next
XDoc.Save("C:\myXmlfile.xml")
然而它似乎只添加了一条记录,但我不知道如何读取每条记录的节点?所以如果theres 2记录那么我会期待
<?xml version="1.0" encoding="UTF-16" standalone="yes"?>
<Customer>
<Name>Mike</Name>
<Age>0</Age>
</Customer>
<Customer>
<Name>Mike</Name>
<Age>0</Age>
</Customer>
但它应该只生成一个xml文件。
有人能引导我做我需要做的事吗?即使在搜索周围我不是100%肯定因为太多方法而且我可能感到困惑。
由于
答案 0 :(得分:2)
在循环内部,您将XDoc
设置为客户。这意味着当您保存XDOC
时,只会保存最后一个客户。
即使您修复了上述问题,您仍然会遇到尝试将多个根元素(每个客户)添加到XML文档的问题。这是不允许的,只允许一个根元素。因此,要生成有效的XML文档,您需要以下内容:
<Customers>
<Customer>
<Name>Mike</Name>
<Age>0</Age>
</Customer>
<Customer>
<Name>Mike</Name>
<Age>0</Age>
</Customer>
</Customers>
对不起,我建议如何更改代码,因为我不知道XML的VB.Net扩展。希望其他人会有所帮助。
顺便说一下,有趣的句柄。答案 1 :(得分:1)
您可以单独生成XDocument
和XElement
此外,您可以使用<%= %>
设置变量数据。
因此,您应该生成并组合如下。
' Generate customers
Dim customers As XEelement = <Customers></Customers>
For Each cust As Customer In Customers
customers.Add(
<Customer>
<Name><%= cust.Name %></Name>
<Age><%= cust.Age %></Age>
</Customer>
)
Next
' Combine customers
Dim XDoc As XDocument =
<?xml version="1.0" encoding="UTF-16" standalone="yes"?><%= customers %>
XDoc.Save("C:\myXmlfile.xml")
答案 2 :(得分:0)
除了@ RichardSchneider的回答,这是VB中的示例代码段。
首先,以单个XDocument
元素为根构建<Customers>
。然后在For Each
循环的每次迭代中,将单个<Customer>
元素添加到XDocument
的根元素:
XDoc As XDocument = <?xml version="1.0" encoding="UTF-16" standalone="yes"?><Customers></Customers>
For Each cust As Customer In customers
XDoc.Root.Add(
<Customer>
<Name>Mike</Name>
<Age>0</Age>
</Customer>
)
Next
XDoc.Save("C:\myXmlfile.xml")