[英]C#: Creating XML document using Linq having not proper output?
我正在嘗試從我的數據創建xml數據,創建成功,但是輸出結果不好,我該如何解決此問題?
這是我的代碼:
private void btnGenerate_Click(object sender, EventArgs e)
{
XElement xml = new XElement("Navigation",
new XElement("NavigationSets"));
foreach (DataRow row_navs in GetNavigationSets().Rows)
{
xml.Add(new XElement("NavigationName", row_navs["name"].ToString()));
foreach (DataRow row_sets in GetMenusInNavigationSetByNavigation(2).Rows)
{
if (int.Parse(row_sets["id"].ToString()) == int.Parse(row_navs["id"].ToString()))
{
foreach (DataRow row_menus in GetMenuById(int.Parse(row_sets["menu_id"].ToString())).Rows)
{
xml.Add(new XElement("MenuName", row_menus["name"].ToString()));
}
}
}
}
xml.Save("data.xml");
}
我期待這樣的輸出
<?xml version="1.0" encoding="utf-8"?>
<Navigation>
<NavigationSets>
<NavigationName>
<MenuName></MenuName>
</NavigationName>
<NavigationSets/>
</Navigation>
在我當前的代碼中,我的輸出是這樣的
<?xml version="1.0" encoding="utf-8"?>
<Navigation>
<NavigationSets/>
<NavigationName></NavigationName>
<MenuName></MenuName>
</Navigation>
要添加到Jon Skeets答案中,
您也可以使用
using System.Xml.Linq;
遍歷列表,所以這只是一條語句,
new XElement("NavigationSets",
menus.Select(menu => new XElement("MenuName"))
)
查看添加元素的時間:
xml.Add(new XElement("NavigationName", row_navs["name"].ToString()));
xml.Add(new XElement("MenuName", row_menus["name"].ToString()));
xml
是此元素:
XElement xml = new XElement("Navigation",
new XElement("NavigationSets"));
這意味着xml
是Navigation
元素, 而不是 NavigationSets
元素。 我懷疑您想要類似的東西:
XElement outer = new XElement("Navigation");
XElement inner = new XElement("NavigationSets");
outer.Add(inner);
...然后添加到inner
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.