Hoe kan een XML-bestand retourneren voor een webservicemethode in asp.net

Ik wil graag een XML-bestand terugzenden als uitvoer van een webservicemethode in asp.net. Iedereen kan helpen met een voorbeeld.

Dit is de webservicemethode die ik heb gedaan. Maar wanneer ik de "Hai" -methode aanroer, krijg ik een foutmelding. De fout die ik heb, wordt hieronder weergegeven:

There is an error in xml Document(1,287).

[WebMethod]
public XElement hai()
{
    try
    {


        XElement xmlTree1 = new XElement("Root",
                            new XElement("Child1", 1),
                            new XElement("Child2", 2),
                            new XElement("Child3", 3),
                            new XElement("Child4", 4),
                            new XElement("Child5", 5),
                            new XElement("Child6", 6)
        );

        return xmlTree1;
    }
    catch
    {
        throw;
    }
}
1
ja ru de
Je kunt de volgende link zien. stackoverflow.com/questions/3000934/& hellip;
toegevoegd de auteur Prashant Mehta, de bron
Ter informatie, weet u dat ASMX niet moet worden gebruikt voor nieuwe ontwikkeling?
toegevoegd de auteur John Saunders, de bron

1 antwoord

Als alternatief kunt u een XmlDocument retourneren:

[WebMethod]
public XmlDocument hai()
{
        XmlDocument doc = new XmlDocument();

        XmlNode rootNode = doc.CreateElement("products");
        doc.AppendChild(rootNode);

        XmlNode product1Node = doc.CreateElement("product");
        rootNode.AppendChild(product1Node);

        XmlNode product1NameNode = doc.CreateElement("Name");
        product1NameNode.InnerText = "Product 1";
        product1Node.AppendChild(product1NameNode);
        XmlNode product1ColorNode = doc.CreateElement("Color");
        product1ColorNode.InnerText = "Blue";
        product1Node.AppendChild(product1ColorNode);

        XmlNode product2Node = doc.CreateElement("product");
        rootNode.AppendChild(product2Node);

        XmlNode product2NameNode = doc.CreateElement("Name");
        product2NameNode.InnerText = "Product 2";
        product2Node.AppendChild(product2NameNode);
        XmlNode product2ColorNode = doc.CreateElement("Color");
        product2ColorNode.InnerText = "Yellow";
        product2Node.AppendChild(product2ColorNode);

        return doc;
}

Output:

<?xml version="1.0" encoding="UTF-8"?>

    
        Product 1
        Blue
    
    
        Product 2
        Yellow
    

0
toegevoegd
Hoe zou het OP helpen om een ​​andere XML-technologie te gebruiken?
toegevoegd de auteur John Saunders, de bron
Het OP gebruikt XElement al. Hoe zou XmlElement beter zijn?
toegevoegd de auteur John Saunders, de bron
Ik heb de bewerkingsgeschiedenis bekeken. Mijn antwoord kwam voordat het OP enig detail had in de vraag. Er stond alleen "hoe retourneer ik een XML-bestand". Twee dagen later voegde de OP code toe die liet zien wat hij probeerde te doen (en hoe hij probeerde de dienst te bellen). Het lijkt erop dat ik die bewerking niet heb opgemerkt. Die bewerking toont (enigszins) welke fout de OP heeft ontvangen, maar geen van onze antwoorden adresseert de fout. Dat is waarom ik zojuist mijn antwoord heb verwijderd.
toegevoegd de auteur John Saunders, de bron
Ik zie nog steeds niet hoe je het OP helpt door simpelweg te laten zien dat er een alternatieve manier is om hetzelfde te doen als wat hij al doet. Dat is vooral zo omdat je manier een oudere technologie gebruikt die lang niet zo gemakkelijk te gebruiken is. Vooral na al die tijd, zonder reden om aan te nemen dat het OP op zoek is naar alternatieve XML-technologieën, sta ik nog steeds voor mijn downvote.
toegevoegd de auteur John Saunders, de bron
De OP wil een xml retourneren van een webdienst, ongeacht de XML-technologie, aangezien hij deze niet opgeeft.
toegevoegd de auteur GeorgeChond, de bron
Ik heb nooit gezegd dat XmlDocument beter is dan XElement. Ik zei zojuist dat het een alternatieve manier is om het te doen. Uw antwoord is nog erger, OP wil xml genereren (hij probeerde het te bereiken in zijn voorbeeldcode + noemde het in opmerkingen onder uw antwoord) en gaf het terug. Uw code laadt een bestand en geeft het terug. En jij bent degene die mijn antwoord neerlegt? Ernstig?
toegevoegd de auteur GeorgeChond, de bron