将我的 XML 模式输出到 HTML

Output my XML schema to HTML

我有一个架构生成器,它使用 XmlSchema 来构建一个基于 EF 模型的 xml。

我的问题是,我想 return 以人类可读格式显示 XML 模式,以便我可以 HTML 将其显示给最终用户。

我试过使用 toString(),但这不起作用。 return 我的 XMLSchema 的最佳方式是什么?

xml 格式正确,我想我只是不知道如何 return 它到前端,所以我可以将它包装在突出显示

代码如下:

 public ActionResult ResourceXML(int id)
    {
        Resource res = db.Resources.Find(id);
        res.Properties = db.ResourceProperties.Where(c => c.ResourceId == id).ToList();

        XmlSchema schema = new XmlSchema();
        XmlSchemaElement resource = new XmlSchemaElement();

        schema.Namespaces.Add("hrr", "http://schema.hrr.com/hrr");
        schema.Namespaces.Add("xs", "http://www.w3.org/2001/XMLSchema");
        schema.TargetNamespace = "http://www.w3schools.com";

        resource.Name = res.Name;
        resource.SchemaTypeName = new XmlQualifiedName("string", "http://www.w3.org/2001/XMLSchema");
        resource.Id = ""+res.Id;

        //annotation
        XmlSchemaAnnotation resourceAnno = new XmlSchemaAnnotation();
        resource.Annotation = resourceAnno;

        //documentation
        XmlSchemaDocumentation docs = new XmlSchemaDocumentation();
        resourceAnno.Items.Add(docs);
        docs.Markup = TextToNodeArray(""+res.Description);

        //complex type
        XmlSchemaComplexType complexType = new XmlSchemaComplexType();

        //sequence
         XmlSchemaSequence sequence = new XmlSchemaSequence();
        complexType.Particle = sequence;

        foreach (var property in res.Properties)
        {
            XmlSchemaElement element = new XmlSchemaElement();

            element.Name = property.Name;
            element.SchemaTypeName = new XmlQualifiedName(GetTheType(property), "http://www.w3.org/2001/XMLSchema");
            element.Id = property.Id+"";

            if (property.Required)
            {
                element.MinOccurs = 1;
            }
            else
            {
                element.MinOccurs = 0;
            }

            if (property.List)
            {
                element.MaxOccursString = "unbounded";
            }
            else
            {
                element.MaxOccursString = "1";
            }
            //annotation
            XmlSchemaAnnotation elemAnno = new XmlSchemaAnnotation();
            element.Annotation = elemAnno;

            //documentation
            XmlSchemaDocumentation elemDoc = new XmlSchemaDocumentation();
            resourceAnno.Items.Add(elemDoc);
            //No property data
            elemDoc.Markup = TextToNodeArray("");

            sequence.Items.Add(element);
        }

        schema.Items.Add(resource);
        schema.Version = "" + res.Version.Number;
      //schema.Write(stream:);
        return File(stream, "text/xml");

    }

您需要将其写入流和 return 流。

例如,

MemoryStream ms = new MemoryStream();
schema.Write(ms);
ms.Flush();
return new FileStreamResult(ms, "text/xml");