首页 > 解决方案 > 从 XML 中删除 xs:schema

问题描述

我在 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 。你能帮我解决这个问题吗?

标签: c#sql-serverxmltsqlweb-services

解决方案


好的,

这是我现在得到的 XML 输出片段:

<DataSet xmlns="test">
<xs:schema xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="Katalog">
<xs:element name="Katalog" msdata:IsDataSet="true" msdata:Locale="en-US">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Produkt">
<xs:complexType>
<xs:sequence>
<xs:element name="NumerKatalogowy" type="xs:string" minOccurs="0"/>
<xs:element name="Nazwa" type="xs:string" minOccurs="0"/>
<xs:element name="NazwaDługa" type="xs:string" minOccurs="0"/>
<xs:element name="Opis" type="xs:string" minOccurs="0"/>
<xs:element name="VAT" type="xs:string" minOccurs="0"/>
<xs:element name="EAN" type="xs:string" minOccurs="0"/>
<xs:element name="StrukturaTowarowa" type="xs:string" minOccurs="0"/>
<xs:element name="Stan" type="xs:string" minOccurs="0"/>
<xs:element name="CenaSRP" type="xs:string" minOccurs="0"/>
<xs:element name="Producent" type="xs:string" minOccurs="0"/>
<xs:element name="Marka" type="xs:string" minOccurs="0"/>
<xs:element name="Multimedia" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Zdjęcie_Główne" type="xs:string" minOccurs="0"/>
<xs:element name="Zdjęcie_Dodatkowe" nillable="true" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent msdata:ColumnName="Zdjęcie_Dodatkowe_Text" msdata:Ordinal="0">
<xs:extension base="xs:string"> </xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Atrybut" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Waga" type="xs:string" minOccurs="0"/>
<xs:element name="Pasuje_do_modelu" type="xs:string" minOccurs="0"/>
<xs:element name="Gwarancja" type="xs:string" minOccurs="0"/>
<xs:element name="Szerokość" type="xs:string" minOccurs="0"/>
<xs:element name="Wysokość" type="xs:string" minOccurs="0"/>
<xs:element name="Głębokość" type="xs:string" minOccurs="0"/>
<xs:element name="Długość_kabla" type="xs:string" minOccurs="0"/>
<xs:element name="Natężenie" type="xs:string" minOccurs="0"/>
<xs:element name="Wtyczka_wejściowa" type="xs:string" minOccurs="0"/>
<xs:element name="Wtyczka_wyjściowa" type="xs:string" minOccurs="0"/>
<xs:element name="Typ_urządzenia" type="xs:string" minOccurs="0"/>
<xs:element name="Kompatybilność" type="xs:string" minOccurs="0"/>
<xs:element name="Pojemność" type="xs:string" minOccurs="0"/>
<xs:element name="Napięcie" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<Katalog xmlns="">
<Produkt diffgr:id="Produkt1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenProdukt_Id="0">
<NumerKatalogowy>449 AMBRER</NumerKatalogowy>
<Nazwa>Żel antybakteryjny do rąk AMBER 75 % 100 ml </Nazwa>
<NazwaDługa>Żel antybakteryjny do rąk AMBER 75 % 100 ml </NazwaDługa>
<Opis>D-panthenol – provitamina B5 jako składnik pielęgnacyjny, intensywnie nawilża, zmiękcza i uelastycznia naskórek. Skutecznie łagodzi podrażnienia, działa kojąco i osłaniającą na skórę.<br/> <br/> Gliceryna o działaniu nawilżającym, a także poprawiającym elastyczność skóry. Żel dzięki wysokiej zawartości alkoholu 75% wykazuje skuteczne działanie antybakteryjne.</Opis>
<VAT>23.00</VAT>
<EAN>5906841042276</EAN>
<Stan>1568</Stan>
<Multimedia diffgr:id="Multimedia1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenMultimedia_Id="0" msdata:hiddenProdukt_Id="0">
<Atrybut diffgr:id="Atrybut1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenMultimedia_Id="0">
<Waga>0.300</Waga>
</Atrybut>
</Multimedia>
</Produkt>
<Produkt diffgr:id="Produkt2" msdata:rowOrder="1" diffgr:hasChanges="inserted" msdata:hiddenProdukt_Id="1">
<NumerKatalogowy>APEDG05000NEG</NumerKatalogowy>
<Nazwa>PowerBank Golf Edge 5000 kolor czarny </Nazwa>
<NazwaDługa>PowerBank Golf Edge 5000 kolor czarny GOLF</NazwaDługa>
<Opis><h3>PowerBank Golf Edge 5000 kolor czarny</h3> <p>Praktyczne urządzenie w razie wyczerpania się baterii telefonu. Łatwy do przenoszenia - lekki i kompaktowy. Pakiet zawiera kabel USB -> micro USB do łatwego ładowania ze złącza komputera lub innego urządzenia.</p></Opis>
<VAT>23.00</VAT>
<EAN>6422505104450</EAN>
<StrukturaTowarowa>21/18/5/3</StrukturaTowarowa>
<Stan>31</Stan>
<CenaSRP>59.9900</CenaSRP>
<Producent>GOLF</Producent>
<Marka>GOLF</Marka>
<Multimedia diffgr:id="Multimedia2" msdata:rowOrder="1" diffgr:hasChanges="inserted" msdata:hiddenMultimedia_Id="1" msdata:hiddenProdukt_Id="1">
<Zdjęcie_Główne>https://lamelbrands.com/public/assets/produkty/GOLF/APEDG05000NEG.jpg</Zdjęcie_Główne>
<Zdjęcie_Dodatkowe diffgr:id="Zdjęcie_Dodatkowe1" msdata:rowOrder="0" diffgr:hasChanges="inserted" msdata:hiddenMultimedia_Id="1">https://lamelbrands.com/public/assets/produkty/GOLF/APEDG05000NEG2.jpg</Zdjęcie_Dodatkowe>
<Atrybut diffgr:id="Atrybut2" msdata:rowOrder="1" diffgr:hasChanges="inserted" msdata:hiddenMultimedia_Id="1">
<Waga>0.210</Waga>
<Gwarancja>24 miesiące</Gwarancja>
<Szerokość>90</Szerokość>
<Wysokość>178</Wysokość>
<Głębokość>27</Głębokość>
<Typ_urządzenia>Li-ion</Typ_urządzenia>
<Kompatybilność>Uniwersalny</Kompatybilność>
<Pojemność>5000 mAh</Pojemność>
<Napięcie>5 V</Napięcie>
</Atrybut>
</Multimedia>
</Produkt>
</Katalog>

我希望它看起来像什么:



<Katalog xmlns="">
<Produkt>
<NumerKatalogowy>449 AMBRER</NumerKatalogowy>
<Nazwa>Żel antybakteryjny do rąk AMBER 75 % 100 ml </Nazwa>
<NazwaDługa>Żel antybakteryjny do rąk AMBER 75 % 100 ml </NazwaDługa>
<Opis>D-panthenol – provitamina B5 jako składnik pielęgnacyjny, intensywnie nawilża, zmiękcza i uelastycznia naskórek. Skutecznie łagodzi podrażnienia, działa kojąco i osłaniającą na skórę.<br/> <br/> Gliceryna o działaniu nawilżającym, a także poprawiającym elastyczność skóry. Żel dzięki wysokiej zawartości alkoholu 75% wykazuje skuteczne działanie antybakteryjne.</Opis>
<VAT>23.00</VAT>
<EAN>5906841042276</EAN>
<Stan>1568</Stan>
<Multimedia >
<Atrybut >
<Waga>0.300</Waga>
</Atrybut>
</Multimedia>
</Produkt>
<Produkt >
<NumerKatalogowy>APEDG05000NEG</NumerKatalogowy>
<Nazwa>PowerBank Golf Edge 5000 kolor czarny </Nazwa>
<NazwaDługa>PowerBank Golf Edge 5000 kolor czarny GOLF</NazwaDługa>
<Opis><h3>PowerBank Golf Edge 5000 kolor czarny</h3> <p>Praktyczne urządzenie w razie wyczerpania się baterii telefonu. Łatwy do przenoszenia - lekki i kompaktowy. Pakiet zawiera kabel USB -> micro USB do łatwego ładowania ze złącza komputera lub innego urządzenia.</p></Opis>
<VAT>23.00</VAT>
<EAN>6422505104450</EAN>
<StrukturaTowarowa>21/18/5/3</StrukturaTowarowa>
<Stan>31</Stan>
<CenaSRP>59.9900</CenaSRP>
<Producent>GOLF</Producent>
<Marka>GOLF</Marka>
<Multimedia>
<Zdjęcie_Główne>https://lamelbrands.com/public/assets/produkty/GOLF/APEDG05000NEG.jpg</Zdjęcie_Główne>
<Zdjęcie_Dodatkowe>https://lamelbrands.com/public/assets/produkty/GOLF/APEDG05000NEG2.jpg</Zdjęcie_Dodatkowe>
<Atrybut >
<Waga>0.210</Waga>
<Gwarancja>24 miesiące</Gwarancja>
<Szerokość>90</Szerokość>
<Wysokość>178</Wysokość>
<Głębokość>27</Głębokość>
<Typ_urządzenia>Li-ion</Typ_urządzenia>
<Kompatybilność>Uniwersalny</Kompatybilność>
<Pojemność>5000 mAh</Pojemność>
<Napięcie>5 V</Napięcie>
</Atrybut>
</Multimedia>
</Produkt>
</Katalog>

推荐阅读