代码之家  ›  专栏  ›  技术社区  ›  Trevor Daniel

将XML/XSLT转换为HTML

  •  0
  • Trevor Daniel  · 技术社区  · 4 年前

    我有以下来自TNT的XML,我应该能够使用它来创建装运标签:

    https://codebeautify.org/xmlviewer/cb55b98e

    我收到了以下XSL文件:

    https://express.tnt.com/expresswebservices-website/stylesheets/HTMLAddressLabelRenderer.xsl

    我尝试将它们与以下代码结合起来:

    XmlWriterSettings settings = new XmlWriterSettings
            {
                OmitXmlDeclaration = true,
                ConformanceLevel = ConformanceLevel.Fragment,
                CloseOutput = false,
            };
    
            // populate the root element with the XML of the address label
            XElement root = new XElement("root", XElement.Parse(await _engine.GetDocument("GET_LABEL", code)));
    
            XDocument newTree = new XDocument();
            using (XmlWriter writer = XmlWriter.Create(newTree.CreateWriter(), settings))
            {
                XslCompiledTransform xslt = new XslCompiledTransform();
                XsltSettings trev = new XsltSettings
                {
                    EnableDocumentFunction = true,
                    EnableScript = true
                };
                xslt.Load(@"C:\Users\Trevo\Desktop\HTMLAddressLabelRenderer.xsl", trev, null);
    
                xslt.Transform(root.CreateReader(), writer);
                writer.Close();
                newTree.Save(@"C:\Users\Trevo\Desktop\result.html");
            }
    

    HTML只包含脚本和head属性,而body是完全空的。

    我搞不懂它为什么不起作用。我认为“根”不是正确的XName,但不确定如何确定它应该是什么。

    任何帮助都将不胜感激!

    0 回复  |  直到 4 年前
        1
  •  1
  •   ian    4 年前
    1. 试试这个 freeformatter
    1. 对于XML输入,在第一行输入下面的XML,然后粘贴XML代码
    <?xml version="1.0"?>
    
    1. 对于XML输出,只需粘贴xsl代码。

    2. 单击转换XML。只需使用格式化程序,但它将提供html输出。