0
Я пытаюсь произвести следующий вывод:Как перебирать все узлы?
<article> <status> </status> ....</article>
<article> <status> </status> ....</article>
Мне нужно немного помощи с обхвата логикой - какие-либо советы, где я может быть пойдет не так. Я попытался использовать цикл «for», но это не привело к созданию нужного выхода. Пожалуйста, порекомендуйте. Спасибо.
public static string createArticleALL()
{
XElement xeRoot = new XElement("article");
XDocument xDoc = new XDocument(xeRoot);
using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["###"].ConnectionString))
{
con.Open();
using (SqlCommand command = new SqlCommand("####", con))
{
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
string title = reader.GetString(0);
string body = reader.GetString(4);
string pub = reader["publication_id"].ToString();
string iss = reader["issue_id"].ToString();
string sid = reader["STORYID"].ToString();
string c = url(title, pub, iss, sid);
DateTime dt = DateTime.Today;
foreach (XElement element in xDoc.Descendants("article"))
{
XElement xeStatus = new XElement("status", "Approved");
xeRoot.Add(xeStatus);
XElement xeTitle = new XElement("title", title);
xeRoot.Add(xeTitle);
XElement xeSubTitle = new XElement("subtitle", title);
xeRoot.Add(xeSubTitle);
XElement xeSynopsis = new XElement("synopsis", body + "...");
xeRoot.Add(xeSynopsis);
XElement xeURL = new XElement("url", c);
xeRoot.Add(xeURL);
XElement xeDisplayDate = new XElement("display_date", dt);
xeRoot.Add(xeDisplayDate);
}
}
}
return xDoc.ToString();
}
return null;
}
1) Какой результат производит ваш код в настоящее время? 2) Выбранный вывод недействителен XML. Действительный XML должен иметь один [корневой элемент] (https://en.wikipedia.org/wiki/Root_element). Вы не можете использовать 'XDocument' для создания недопустимого XML. – dbc