Xml结束标记不止一次地重复它 [英] Xml end tag repeating it more than once
问题描述
Hello Guys,
我正在编写一个代码,将数据从SQL表提取到XML文件,一切正常,但我的挑战是xml结束标记不止一次打印。
i尝试过:
我尝试过:
XmlTextReader XTReader = new XmlTextReader(ds1.GetXml(),XmlNodeType.Element,null);
// XMLTextWriter
//将数据写入xml文件
XmlTextWriter XTWriter = new XmlTextWriter(directoryPath + Tfilename.Trim()+。xml,Encoding.UTF8);
XTWriter.WriteStartDocument();
XTWriter.Formatting = Formatting.Indented;
XTWriter.Indentation = 2;
string fieldName =;
while(XTReader.Read())
{
switch(XTReader.NodeType)
{
//检查节点名称
case XmlNodeType.Element:
XTWriter.WriteStartElement(XTReader.Name);
fieldName = XTReader.Name;
break;
//检查节点值
case XmlNodeType.Text:
//如果NodeName是PubDate
string Fname =;
foreach(mFieldname中的字符串mList)
{
Fname = mList.ToString()。ToLower();
if(fieldName.ToLower()== Fname)
break;
}
if(fieldName.ToLower()== Fname)
// if(fieldName.ToLower()== SearchDate.ToLower())
{
DateTime dt = DateTime.Parse( XTReader.Value.ToString());
//这里DateTime可以更改为任何格式
// MM-dd -yyyy或dd-MM-yyyy或.ToShortDateString()......
XTWriter.WriteString(dt.ToString(dd / MM / yyyy));
}
else
XTWriter.WriteString(XTReader.Value);
// break;
//}
休息;
案例XmlNodeType.EndElement:
XTWriter.WriteEndElement();
休息;
} //切换
} //而
XTWriter.WriteEndElement();
XTWriter.Close();
XTReader.Close();
DA1.Dispose();
cmd.Dispose();
我得到的结果是显示太多PatientDemographics_Record而不是只有NewDataSet:
Hello Guys,
I am writing a code that will extract data from SQL table to XML file, all is working but my challenge is the xml end tag printing itself more than once.
i have tried :
What I have tried:
XmlTextReader XTReader = new XmlTextReader(ds1.GetXml(), XmlNodeType.Element, null);
//XMLTextWriter
//To write data into xml file
XmlTextWriter XTWriter = new XmlTextWriter(directoryPath + Tfilename.Trim() + ".xml", Encoding.UTF8);
XTWriter.WriteStartDocument();
XTWriter.Formatting = Formatting.Indented;
XTWriter.Indentation = 2;
string fieldName = "";
while (XTReader.Read())
{
switch (XTReader.NodeType)
{
//Check for the Node Name
case XmlNodeType.Element:
XTWriter.WriteStartElement(XTReader.Name);
fieldName = XTReader.Name;
break;
//Check for the Node Value
case XmlNodeType.Text:
//If the NodeName is PubDate
string Fname = "";
foreach (string mList in mFieldname)
{
Fname = mList.ToString().ToLower();
if (fieldName.ToLower() == Fname)
break;
}
if (fieldName.ToLower() == Fname)
//if (fieldName.ToLower() == SearchDate.ToLower())
{
DateTime dt = DateTime.Parse(XTReader.Value.ToString());
//Here the DateTime can be changed to any format as
//MM-dd-yyyy or dd-MM-yyyy or .ToShortDateString() ...
XTWriter.WriteString(dt.ToString("dd/MM/yyyy"));
}
else
XTWriter.WriteString(XTReader.Value);
// break;
//}
break;
case XmlNodeType.EndElement:
XTWriter.WriteEndElement();
break;
} //switch
} // while
XTWriter.WriteEndElement();
XTWriter.Close();
XTReader.Close();
DA1.Dispose();
cmd.Dispose();
the result i am getting is shows is too many "PatientDemographics_Record" instead of only then the "NewDataSet" :
推荐答案
它可能是更容易让 SQL Server 生成XML
,例如:
It might be easier to let SQL Server generate theXML
, example:
SELECT Cust.CustomerID,
OrderHeader.CustomerID,
OrderHeader.SalesOrderID,
OrderHeader.Status,
Cust.CustomerType
FROM Sales.Customer Cust, Sales.SalesOrderHeader OrderHeader
WHERE Cust.CustomerID = OrderHeader.CustomerID
ORDER BY Cust.CustomerID
FOR XML AUTO, ELEMENTS
更多信息:使用自动模式 [ ^ ]
输出到XML文件的示例:将XML保存在文件中从文件中读取XML(在SQL Server中)|使用Manoj的SQL [ ^ ]
这篇关于Xml结束标记不止一次地重复它的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!