【发布时间】:2018-06-19 15:14:09
【问题描述】:
您好,我正在通过以下代码创建我的 xml
DataSet ds = new DataSet("OrderDetail");
DataTable Detail = new DataTable("Detail");
DataTable Items = new DataTable("Items");
string query = "Some Query";
SqlDataAdapter dataAdapt = new SqlDataAdapter(query , conn);
dataAdapt.Fill(Detail);
ds.Tables.Add(Detail);
string loopingquery = "Some Query";
SqlDataAdapter dataAdapt1 = new SqlDataAdapter(loopingquery, conn);
dataAdapt1.Fill(Items);
ds.Tables.Add(Items);
DataRelation relation = ds.Relations.Add("relation", ds.Tables["Detail"].Columns["OrderNumber"], ds.Tables["Items"].Columns["OrderNumber"]);
relation.Nested = true;
ds.WriteXml(Server.MapPath("~/") + Detail.Rows[0]["OrderNumber"] + "_XML.xml");
但我需要在生成 xml 之前从 Items DataTable 中删除 OrderNumber 列。
我曾尝试将列删除为
ds.Tables["Items"].Columns.Remove("OrderNumber");
但它给出了例外
关系列不能删除。
我该怎么做,是否可以隐藏 OrderNumber 列。还是有其他方法?
XML 示例
<OrderDetail>
<Detail>
<OrderNumber>354699</OrderNumber>
<OrderDate>01/09/2018</OrderDate>
<Items>
<OrderNumber>354699</OrderNumber> //Need to remove or hide
<Quantity>1</Quantity>
<Sku>test240</Sku>
<Item>testEye®</Item>
<Price>22.95</Price>
</Items>
<Items>
<OrderNumber>354699</OrderNumber> //Need to remove or hide
<Quantity>1</Quantity>
<Sku />
<Item>test</Item>
<Price>-32.95</Price>
</Items>
</Detail>
</OrderDetail>
您可以从下面选择任何一种方法从 XML 中删除节点
新版本的问题已解决更新 1
Using System.XML.Linq; (NameSpace)
string xml = ds.GetXml();
XDocument doc = XDocument.Parse(xml);
doc.Descendants("OrderNumbers").Remove();
doc.Save(Server.MapPath("~/") + "XMLGeneration.xml");
问题已解决更新 2 新旧版本 (2.0)
Using System.XML; (NameSpace)
string str = Convert.ToString(ds.GetXml());
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(str);
XmlNodeList nodes = xmlDoc.GetElementsByTagName("Items");
foreach (XmlNode node in nodes)
{
node.RemoveChild(node.SelectSingleNode("//OrderNumbers"));
}
xmlDoc.Save(Server.MapPath("~/") + "XMLGeneration.xml");
问题已解决更新 3 新旧版本 (2.0)
Using System.XML; (NameSpace)
ds.WriteXml(Server.MapPath("~/") + "XMLGeneration.xml");
xmlDoc.Load(Server.MapPath("~/") + "XMLGeneration.xml");
XmlNodeList nodes = xmlDoc.SelectNodes("//Items");
foreach (XmlNode node in nodes)
{
node.RemoveChild(node.SelectSingleNode("//OrderNumbers"));
}
xmlDoc.Save(Server.MapPath("~/") + "XMLGeneration.xml");
【问题讨论】:
-
你可以做你正在做的事情,然后使用 Linq 将 xml 转换为你想要的方式到 XML 或任何 XML API。
-
你能简单地给出答案吗,我是如何创建的新手,我正在使用 ado.net 代码来获取数据表中的数据
-
@Crowcoder 请检查我的更新代码以创建 xml
-
您能否添加一小部分您获得的 xml 以及您想要的样子?
-
@Crowcoder 我已经用示例 xml 更新了问题,我需要删除 OrderNumber 注释为(//需要删除或隐藏)
标签: c# asp.net xml xml-parsing dataset