简体   繁体   中英

Load xml file from path in WCF Web Service

Trying to open this test file, which exists in a folder under my solution:

C:\dev\trunk\Development\WebSvc\WCFProj\Xml\po.xml

My c# method is :

  public XmlDocument generateXmlResponse() { string appDir = AppContext.BaseDirectory; XmlDocument xml = new XmlDocument(); xml.LoadXml(@"Xml\\ResponseTempl.xml"); return xml; } 

and the exception message is :

  "Data at the root level is invalid. Line 1, position 1."

Now when I step thru the code, I can use the relative path :

appDir + @"Xml\po.xml"

which correctly resolves to:

C:\dev\trunk\Development\WebSvc\WCFProj\Xml\po.xml

and I just took the sample PurchaseOrder.xml from the ms website https://msdn.microsoft.com/en-us/library/bb343181(v=vs.110).aspx :

 <PurchaseOrder PurchaseOrderNumber="99503" OrderDate="1999-10-20"> <Address Type="Shipping"> <Name>Ellen Adams</Name> <Street>123 Maple Street</Street> <City>Mill Valley</City> <State>CA</State> <Zip>10999</Zip> <Country>USA</Country> </Address> <Address Type="Billing"> <Name>Tai Yee</Name> <Street>8 Oak Avenue</Street> <City>Old Town</City> <State>PA</State> <Zip>95819</Zip> <Country>USA</Country> </Address> <DeliveryNotes>Please leave packages in shed by driveway.</DeliveryNotes> <Items> <Item PartNumber="872-AA"> <ProductName>Lawnmower</ProductName> <Quantity>1</Quantity> <USPrice>148.95</USPrice> <Comment>Confirm this is electric</Comment> </Item> <Item PartNumber="926-AA"> <ProductName>Baby Monitor</ProductName> <Quantity>2</Quantity> <USPrice>39.98</USPrice> <ShipDate>1999-05-21</ShipDate> </Item> </Items> </PurchaseOrder> 

The issue here is that the following line:

xml.LoadXml(@"Xml\ResponseTempl.xml");

Is trying to load the string as XML and giving you the error as it is invalid XML. LoadXml should be used like so:

xml.LoadXml("<item><name>wrench</name></item>");

Since you are trying to read from a file you need to use: https://msdn.microsoft.com/en-us/library/875kz807(v=vs.110).aspx

This will look like the following:

xml.Load(@"Xml\ResponseTempl.xml");

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM