Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否可以从生成的xml中删除关系列_C#_Asp.net_Xml_Xml Parsing_Dataset - Fatal编程技术网

C# 是否可以从生成的xml中删除关系列

C# 是否可以从生成的xml中删除关系列,c#,asp.net,xml,xml-parsing,dataset,C#,Asp.net,Xml,Xml Parsing,Dataset,嗨,我正在通过下面的代码创建我的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); dataAd

嗨,我正在通过下面的代码创建我的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数据表中删除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>
新版本和旧版本(2.0)的问题解决更新2

新版本和旧版本(2.0)的问题解决更新3


您可以从数据集中获取xml,然后执行第二步删除OrderNumber元素。确保使用
System.Xml.Linq
添加

string xml = "<OrderDetail><Detail><OrderNumber>354699</OrderNumber><OrderDate>01/09/2018</OrderDate>    <Items><OrderNumber>354699</OrderNumber><Quantity>1</Quantity><Sku>test240</Sku><Item>testEye®</Item><Price>22.95</Price></Items><Items><OrderNumber>354699</OrderNumber><Quantity>1</Quantity><Sku /><Item>test</Item><Price>-32.95</Price></Items></Detail></OrderDetail>";
XDocument doc = XDocument.Parse(xml);
doc.Descendants("OrderNumber").Remove();
doc.Save(Server.MapPath("~/") + ......);
string xml=“35469901/09/2018 3546991test240testEye®22.953546991test-32.95”;
XDocument doc=XDocument.Parse(xml);
doc.substands(“OrderNumber”).Remove();
doc.Save(Server.MapPath(“~/”+……);

您可以做您正在做的事情,然后使用Linq将xml转换为您想要的xml或任何xml API。您能简单地给出答案吗,我对如何创建是新手,我正在使用ado.net代码获取数据datatable@Crowcoder请检查我的更新代码以创建xml。你可以添加一个小样本的xml吗?它会是你想要的样子吗?@Crowcoder我已经用样本xml更新了问题,我需要删除注释为的OrderNumber(//需要删除或隐藏)XDocument的名称空间是什么?您想让我做一些事情,比如string xml=convert.tostring(ds.WriteXml);
XDocument
System.xml.Linq
中。您可以使用
ds.GetXml()
而不是
WriteXml()
以字符串形式获取xml。我已从System.xml.Linq.dll的path STAIL命名空间下载System.xml.Linq.dll。Linq未调用您不需要下载任何内容,它包含在.Net framework中。您应该删除下载内容的引用。如果键入“System.xml.Linq.XDocument”你没有任何智能感知?你现在也应该扫描你的电脑,看看有没有病毒。
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");
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");
string xml = "<OrderDetail><Detail><OrderNumber>354699</OrderNumber><OrderDate>01/09/2018</OrderDate>    <Items><OrderNumber>354699</OrderNumber><Quantity>1</Quantity><Sku>test240</Sku><Item>testEye®</Item><Price>22.95</Price></Items><Items><OrderNumber>354699</OrderNumber><Quantity>1</Quantity><Sku /><Item>test</Item><Price>-32.95</Price></Items></Detail></OrderDetail>";
XDocument doc = XDocument.Parse(xml);
doc.Descendants("OrderNumber").Remove();
doc.Save(Server.MapPath("~/") + ......);