【发布时间】:2020-10-05 09:02:06
【问题描述】:
我在 C# 中有一个简单的 web 服务,可以为我的一个客户生成带有产品提要的 XML。
{
public SqlConnection con;
public DataSet ds;
public string query;
public SqlCommand sqlcom;
public XmlReader reader;
public string xml;
[WebMethod]
public DataSet GetProduct()
{
con = new SqlConnection(@"Data Source=;Initial Catalog=;Persist Security Info=True;User ID=sa;pwd=;");
query = @"
select
1 as Tag,
null as Parent,
null as [Katalog!1],
null as [Produkt!2!NumerKatalogowy!element],
null as [Produkt!2!Nazwa!Element],
null as [Produkt!2!NazwaDluga!Element],
null as [Produkt!2!Opis!CDATA],
null as [Produkt!2!VAT!Element],
null as [Produkt!2!EAN!Element],
null as [Produkt!2!StrukturaTowarowa!Element],
null as [Produkt!2!Stan!Element],
null as [Produkt!2!CenaSRP!Element],
null as [Multimedia!3!Zdjecie_Glowne!element],
null as [Multimedia!3!Zdjecie_Dodatkowe!element],
null as [Multimedia!3!Zdjecie_Dodatkowe!element],
null as [Multimedia!3!Zdjecie_Dodatkowe!element],
null as [Multimedia!3!Zdjecie_Dodatkowe!element],
null as [Multimedia!3!Zdjecie_Dodatkowe!element],
null as [Produkt!2!Producent!Element],
null as [Produkt!2!Marka!Element],
null as [Atrybut!4!Waga!Element],
null as [Atrybut!4!Pasuje_do_modelu!Element],
null as [Atrybut!4!Gwarancja!Element],
null as [Atrybut!4!Szerokosc!Element],
null as [Atrybut!4!Wysokosc!Element],
null as [Atrybut!4!Głębokosc!Element],
null as [Atrybut!4!Długosc_kabla!Element],
null as [Atrybut!4!Natezenie!Element],
null as [Atrybut!4!Wtyczka_wejsciowa!Element],
null as [Atrybut!4!Wtyczka_wyjsciowa!Element],
null as [Atrybut!4!Typ_urzadzenia!Element],
null as [Atrybut!4!Kompatybilnosc!Element],
null as [Atrybut!4!Pojemnosc!Element],
null as [Atrybut!4!Napiecie!Element]
Union all
/* some selects */
for xml explicit
";
sqlcom = new SqlCommand(query, con);
con.Open();
ds = new DataSet();
reader = sqlcom.ExecuteXmlReader();
ds.ReadXml(reader, XmlReadMode.Auto);
reader.Close();
con.Close();
return ds;
}
}
这给了我 XML 文件,但在标题中有我必须删除的 xs:schema。我该怎么做? XmlReadMode 的更改模式不能解决它。同样在每个产品上,我都有我想删除的标签 diffgr。 你能帮我解决这个问题吗?
【问题讨论】:
-
为什么需要移除架构?
-
您是否尝试过自己寻找解决方案?
-
阅读
ReadXml文档,尤其是XmlReadMode.Auto的作用。 -
lilpri,如果您能提供一个可重现的最小示例,那就太好了:(1) DDL 和样本数据填充,即 CREATE 表加上 INSERT、T-SQL 语句。 (2) 你需要做什么,即逻辑。 (3) 基于上述#1 中的示例数据的所需 XML 输出。 (4) 你的 SQL Server 版本 (SELECT @@version;)
-
lilpri,另外,
FOR XML EXPLICIT是创建 XML 的最麻烦的方法。有更好的方法来做到这一点。
标签: c# sql-server xml tsql web-services