M
M1iS
I’m having a problem with writing full end elements on elements that are
supposed to be empty strings. I’m calling the WriteFullEndElement method on
my elements that are supposed to be empty however it is still creating a self
closing tag. My code is posted below.
Thanks,
Scott
//build xml document
XmlTextWriter xw = new XmlTextWriter(docFullName, Encoding.UTF8);
xw.WriteStartDocument();
xw.WriteStartElement(app.XmlRootName);
xw.WriteAttributeString("version", DateTime.Now.ToShortDateString());
//get application translations
DataTable translations =
ApplicationController.GetTranslations(ApplicationID);
int currentLanguageID = 0;
int languageID;
string languageName;
string languageCode;
string resourceCode;
string translation;
bool isFirstLanguageElement = true;
bool isEmpty;
int counter = 0;
foreach (DataRow t in translations.Rows)
{
languageID = (int)t["LanguageID"];
languageName = t["LanguageName"].ToString();
languageCode = t["LanguageCode"].ToString();
resourceCode = t["ResourceCode"].ToString();
translation = t["Translation"].ToString();
isEmpty = (bool)t["IsEmpty"];
if (currentLanguageID != languageID)
{
if (isFirstLanguageElement)
{
currentLanguageID = languageID;
xw.WriteStartElement("language");
if (app.XmlLanguageElementIdType.ToLower() == "name")
{
xw.WriteAttributeString("name", languageName);
}
else if (app.XmlLanguageElementIdType.ToLower() == "code")
{
xw.WriteAttributeString("code", languageCode);
}
isFirstLanguageElement = false;
}
else
{
xw.WriteEndElement();
currentLanguageID = languageID;
xw.WriteStartElement("language");
if (app.XmlLanguageElementIdType.ToLower() == "name")
{
xw.WriteAttributeString("name", languageName);
}
else if (app.XmlLanguageElementIdType.ToLower() == "code")
{
xw.WriteAttributeString("code", languageCode);
}
}
}
xw.WriteStartElement(app.XmlTranslationElementName);
xw.WriteAttributeString("id", resourceCode);
if (isEmpty)
{
xw.WriteString("");
xw.WriteFullEndElement();
}
else
{
xw.WriteString(translation);
xw.WriteEndElement();
}
counter += 1;
if (counter == translations.Rows.Count)
xw.WriteEndElement();
}
xw.WriteEndElement();
xw.Close();
supposed to be empty strings. I’m calling the WriteFullEndElement method on
my elements that are supposed to be empty however it is still creating a self
closing tag. My code is posted below.
Thanks,
Scott
//build xml document
XmlTextWriter xw = new XmlTextWriter(docFullName, Encoding.UTF8);
xw.WriteStartDocument();
xw.WriteStartElement(app.XmlRootName);
xw.WriteAttributeString("version", DateTime.Now.ToShortDateString());
//get application translations
DataTable translations =
ApplicationController.GetTranslations(ApplicationID);
int currentLanguageID = 0;
int languageID;
string languageName;
string languageCode;
string resourceCode;
string translation;
bool isFirstLanguageElement = true;
bool isEmpty;
int counter = 0;
foreach (DataRow t in translations.Rows)
{
languageID = (int)t["LanguageID"];
languageName = t["LanguageName"].ToString();
languageCode = t["LanguageCode"].ToString();
resourceCode = t["ResourceCode"].ToString();
translation = t["Translation"].ToString();
isEmpty = (bool)t["IsEmpty"];
if (currentLanguageID != languageID)
{
if (isFirstLanguageElement)
{
currentLanguageID = languageID;
xw.WriteStartElement("language");
if (app.XmlLanguageElementIdType.ToLower() == "name")
{
xw.WriteAttributeString("name", languageName);
}
else if (app.XmlLanguageElementIdType.ToLower() == "code")
{
xw.WriteAttributeString("code", languageCode);
}
isFirstLanguageElement = false;
}
else
{
xw.WriteEndElement();
currentLanguageID = languageID;
xw.WriteStartElement("language");
if (app.XmlLanguageElementIdType.ToLower() == "name")
{
xw.WriteAttributeString("name", languageName);
}
else if (app.XmlLanguageElementIdType.ToLower() == "code")
{
xw.WriteAttributeString("code", languageCode);
}
}
}
xw.WriteStartElement(app.XmlTranslationElementName);
xw.WriteAttributeString("id", resourceCode);
if (isEmpty)
{
xw.WriteString("");
xw.WriteFullEndElement();
}
else
{
xw.WriteString(translation);
xw.WriteEndElement();
}
counter += 1;
if (counter == translations.Rows.Count)
xw.WriteEndElement();
}
xw.WriteEndElement();
xw.Close();