Xml结束标记不止一次地重复它 [英] Xml end tag repeating it more than once

查看:71
本文介绍了Xml结束标记不止一次地重复它的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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 the XML, 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆