我有一个很大的问题,就是失去了5个小时。 我必须创建一个XML文件,该文件将由数据库reg填充。 我有可变结构,在某些情况下会使用特定的子结构。
逻辑很简单。
我必须得到所有的机构, 然后在每个机构我必须迭代一个foreach循环, 并获得他们想要出售/出租的所有房屋。 但它不仅有房屋,还有公寓,车库等等。 每个场景都有自己的结构和不同的数据。
这不是全部,必须有条件。仅在应该使用xml子项时才写入。
一段xml示例
<Clients>
<Client>
<aggregator/>
<code/>
<reference/>
<contact>
<secondhandListing>
<property>
<code/>
<reference/>
<scope/>
<address>
<features/>
<operation> // variable structure
1example <price/>
<communityCosts/>
2example <price/>
<communityCosts/>
<depositType/>
</operation>
</property>
</secondhandListing>
有人能告诉我一个如何做到这一点的例子。 到目前为止我归档的是:
var agenciasConectores = //query of Agencys
foreach (var agenciaConector in agenciasConectores)
{
var imoveisAgencia = // query of homes in each Agency
XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("Clients",
from agencia in agenciasConectores
select new XElement("Client", new XAttribute("ID", agencia.AgencyId),
new XElement("aggregator", agencia.ConnectorLicense),
new XElement("code", agencia.Name),
new XElement("Reference", agencia.Phone),
new XElement("contact", agencia.Phone),
new XElement("secondhandListing"),
new XElement("newbuildListing")
)));
foreach (var imovel in imoveisAgencia)
{
if (imoveisAgencia.Count() > 1)
{
doc.Document.Add(new XElement("property",
new XElement("code", "codigo"),
new XElement("reference", "reference"),
new XElement("scope", "scope"),
new XElement("address", "address"),
new XElement("contact", "contact"),
new XElement("features", "features"),
new XElement("operation", "operation"),
new XElement("description", "description")));
}
}
}
答案 0 :(得分:0)
当我尝试在Visual Studio中运行它时,以下行引发异常
doc.Document.Add(new XElement("property",
...
你试图做更像这样的事吗?
doc.Root.Add(new XElement("property",
...
或者,或许,更接近这个
doc.Descendants("Client")
.Single(c => c.code == "something")
.Add(new XElement("property",
...
答案 1 :(得分:0)
已经找到了解决方案。
简单。
XElement root = new XElement("root");
XElement child = new XElement("Child");
XElement child2 = new XElement(Child2);
然后我填充元素。
Child.SetValue(a);
child2.Setvalue(b);
并且在最后,我只是将元素添加到父元素。
root.add(Child,Child2);
但是我也可以做一些验证(在我的情况下是循环)
If(a>b)
root.add(child);
else
root.add(child2);
试试看。我通过hehehhe 的例子来学习