【问题标题】:Display XML String to Browser In XML Format以 XML 格式向浏览器显示 XML 字符串
【发布时间】:2012-05-29 20:18:32
【问题描述】:

有人可以帮助我以最佳方式以 xml 格式的方式向浏览器显示原始 xml 字符串吗?

我在下面创建的代码没有显示任何内容并出错:

  string xml = GetMessageXml(Request.QueryString["ID"].ToString());
            XDocument doc;
            using (StringReader s = new StringReader(xml.Substring(1)))
            {
                doc = XDocument.Load(s);
            }
            Response.ContentType = "text/xml";
            doc.Save(Response.Output);
            Response.Write(doc.ToString());

错误:
XML 解析错误:文档元素后出现垃圾
'位置:H t t p:localhost/Accounts/EventLogMessageDetails.aspx?id=178'
第 83 行,第 9 列:'

这是 xml 字符串:

?<?xml version="1.0" encoding="utf-8"?>
<Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<OrderID>00000000-0000-0000-0000-000000000000</OrderID>
<IsOrderThrough>true</IsOrderThrough>
<VendorName>le</VendorName>
<OrderUniqueIdentifier>K03936</OrderUniqueIdentifier>
<SoldToCustomerID>A786</SoldToCustomerID>
<ShipToCustomerID>A786</ShipToCustomerID>
<OrderType>Standard</OrderType>
<CustomerPurchaseOrderNumber>PO0000336</CustomerPurchaseOrderNumber>
<ProjectName />
<EmailAddress>Nair@ecomkva.com</EmailAddress>
<DeliveryDate>2012-05-29T10:09:55.492696-05:00</DeliveryDate>
<ShipToAddress>
<AddressID>00075</AddressID>
<OrganizationName>SEBA-E</OrganizationName>
<AddressLine1>3700 STATE</AddressLine1>
<AddressLine2>Elk</AddressLine2>
<City>LA CROSSE</City>
<State>WI</State>
<ZipCode>54601</ZipCode>
<Country>US</Country>
<DaytimePhoneNumber>6782260680EXT</DaytimePhoneNumber>
</ShipToAddress>
<ShippingMethodName>FEDEX PRIORITY OVERNIGHT</ShippingMethodName>
<ShippingMethodID>F01</ShippingMethodID>
<MarketSegment>Commercial</MarketSegment>
<Comments>Elk^</Comments>
<LineItems>
<OrderLineItem>
<LineItemID>00000000-0000-0000-0000-000000000000</LineItemID>
<ProductID>Kbv</ProductID>
<Quantity>2</Quantity>
<ListPrice>10.67</ListPrice>
<PlacedPrice>3.84</PlacedPrice>
<DeliveryDate>2012-05-29T10:09:56.6957979-05:00</DeliveryDate>
<ShippingAddress>
<AddressID>Z00138075</AddressID>
<OrganizationName>moomoo</OrganizationName>
<AddressLine1>3700 STATE ROAD 16</AddressLine1>
<AddressLine2>moomoo</AddressLine2>
<City>LA CROSSE</City>
<State>WI</State>
<ZipCode>54601</ZipCode>
<Country>US</Country>
<DaytimePhoneNumber>675555550680EXT</DaytimePhoneNumber>
</ShippingAddress>
<ShippingMethodID>F01</ShippingMethodID>
<EmailAddress>IS@Cnj.com</EmailAddress>
<Comments />
<SequenceNumber>0</SequenceNumber>
</OrderLineItem>
</LineItems>
<BusinessUnit />
<FOBPoint>FB2</FOBPoint>
<Notify>TD</Notify>
<WorkOrder />
<SubmittedByUserName>TDAVIS</SubmittedByUserName>
<SpecialInstructions />
</Order>

【问题讨论】:

  • 问题出在你得到的 XML 中。它无法解析它。请向我们展示您尝试编写的整个 XML。我从错误消息中的猜测是你有两个根元素,即第一个 Order 是第一个元素,然后你有另一个 Order 在它之后。这不是一个有效的 XML 文档。除此之外,通过使用 XDocument 的 ToString,您似乎走在了正确的轨道上。
  • 我认为你应该参考这篇 SO 帖子 - stackoverflow.com/questions/350314/…
  • 为什么不用linq to XML,你想从xml中提取什么?
  • 你能帮我一个 linq 解决方案吗?
  • 请举例说明你想用这个 XML 做什么?

标签: c# asp.net


【解决方案1】:

这是我快速完成的。

将 Order.xml 添加到我的 ASP.NET 项目中。

创建一个 Showorder.aspx 页面,并在 之间包含 C# 代码,如下所示:

<body>
 <form id="form1" runat="server">
  <div>
   <% 
     string xml = Request.QueryString["ID"].ToString();
        XDocument doc;
        doc = XDocument.Load(xml);
        Response.Write("<XMP>"+ doc.ToString()+"<\\XMP>");
        %>
    </div>
  </form>
</body>

之后我启动了我的页面如下:

  http://localhost:52134/showxml.aspx?ID=http://localhost:52134/order.xml

我确实得到了如下的 XML:(注意:一定要使用 XMP ..../XMP 否则你不会在浏览器中看到格式化的 XML)

随意试验代码并尝试任何你想要的方式。

【讨论】:

  • 如何从我的 xml 中删除垃圾以使其以良好的形式使用此代码?
【解决方案2】:

您的问题在于您的输入 XML,因为它是 BAD XML。

看看你的错误

Line Number 83, Column 9:</Order><Order xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

您的 XML 在第 83 行定义了 XML 命名空间,并在顶部定义了“Order”元素。似乎当您合并或创建 XML 时,您只是搞砸了它。

“以 xml 格式的方式向浏览器显示原始 xml 字符串”是什么意思?您的意思是“以 xml 格式的方式向浏览器显示原始字符串”?请举例说明您输入的内容以及您希望如何在浏览器中显示..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-27
    • 2016-03-05
    • 2010-11-10
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-06
    相关资源
    最近更新 更多