Я написал программу для создания XML-документа из excel, но выводит следующий формат (обратите внимание на xmls = "" на узлах ключа и значения (я не хочу этого))Удалить пространства имен из узлов xml
<?xml version="1.0" encoding="utf-8"?>
<Content xmlns="uuid:5c2dffe6-cf72-4211-a8a0-dc6a7baf3ff1">
<Redirect xmlns="xmlns:xlink=http://www.w3.org/1999/xlink">
<key xmlns="">/*$0*/</key>
<value xmlns="">/</value>
</Redirect>
<Redirect xmlns="xmlns:xlink=http://www.w3.org/1999/xlink">
<key xmlns="">/2014-12-22</key>
<value xmlns="">/</value>
</Redirect>
<Redirect xmlns="xmlns:xlink=http://www.w3.org/1999/xlink">
<key xmlns="">/a</key>
<value xmlns="">/</value>
</Redirect>
</Content>
желаемого уведомление формата ключ и значение узлы не имеют Xmlns = ""
<Content xmlns="uuid:5c2dffe6-cf72-4211-a8a0-dc6a7baf3ff1">
<Redirect xmlns="xmlns:xlink=http://www.w3.org/1999/xlink">
<key>/*$0*/</key>
<value>/</value>
</Redirect>
<Redirect xmlns="xmlns:xlink=http://www.w3.org/1999/xlink">
<key>/2014-12-22</key>
<value>/</value>
</Redirect>
<Redirect xmlns="xmlns:xlink=http://www.w3.org/1999/xlink">
<key>/a</key>
<value>/</value>
</Redirect>
</Content>
мой код
private void btnUpload_Click(object sender, EventArgs e)
{
if (lblFileUploaded.Text != "No_File_has_been_uploaded")
{
if (ddlHostName.SelectedIndex == -1)
{
MessageBox.Show("please_select_a_host_name");
}
else
{
var hostName = ddlHostName.SelectedItem.ToString();
//"Content" + "xmlns=\"uuid:5c2dffe6-cf72-4211-a8a0-dc6a7baf3ff1\""
XNamespace ns = "uuid:5c2dffe6-cf72-4211-a8a0-dc6a7baf3ff1";
var rootNode = new XElement(ns + "Content");
var processedUrls = new HashSet<string>();
//select the file thats been uploaded
var file = new FileInfo(openFileDialog1.FileName);
if (!file.Exists)
{
return;
}
if (file.Extension != ".xlsx")
{
lblFileUploaded.Text = "ERROR__File_format_invalid";
return;
}
using (var package = new ExcelPackage(file))
{
var workbook = package.Workbook;
var sheet = workbook.Worksheets[1];
int lastRow = sheet.Dimension.End.Row;
//loop through the xsls rows of data
for (int i = 2; i < lastRow; i++)
{
var oldUrl = sheet.Cells[i, 1].Text.Trim();
var newUrl = sheet.Cells[i, 2].Text.Trim();
if (string.IsNullOrWhiteSpace(oldUrl) || string.IsNullOrWhiteSpace(newUrl) || processedUrls.Contains(oldUrl))
continue;
processedUrls.Add(oldUrl);
XNamespace ns2 = "xmlns:xlink=" + "http://www.w3.org/1999/xlink";
var urlChildNode = new XElement(ns2 + "Redirect");
rootNode.Add(urlChildNode);
var urlOldNode = new XElement("key", oldUrl.Replace(hostName, ""));
urlChildNode.Add(urlOldNode);
if (newUrl.Equals(hostName + "/"))
{
var urlNewNode = new XElement("value", newUrl.Replace(hostName + "/", "/"));
urlChildNode.Add(urlNewNode);
}
else if (newUrl.Equals(hostName))
{
var urlNewNode = new XElement("value", newUrl.Replace(hostName, "/"));
urlChildNode.Add(urlNewNode);
}
else if (newUrl.Equals("www.aircharterservice.com"))
{
var urlNewNode = new XElement("value", newUrl.Replace("www.aircharterservice.com", "/"));
urlChildNode.Add(urlNewNode);
}
else
{
var urlNewNode = new XElement("value", newUrl.Replace(hostName, ""));
urlChildNode.Add(urlNewNode);
}
}
}
На данный момент я изо всех сил пытаюсь понять, как я могу удалить ненужное пространство имен
'' key "' -> 'ns2 +" key "', '" value "' -> 'ns2 +" value "'. – PetSerAl
Удивительная работала, спасибо вам большое. Больше не использовать find и replace теперь у меня есть решение. Не могли бы вы объяснить, как это работает? – Paul