[英]Error in loading xml file in XmlDocument
嗨,我有以下 xml 文件,我正在嘗試使用以下代碼將其加載到 xml 文檔中 -
XmlDocument Doc = new XmlDocument();
Doc.LoadXml(@"C:\MappingFiles\InputFile.xml");
但它的拋出錯誤 - 根級別的數據無效。 第 1 行,位置 1。
Xml 文件是完全結構化的,仍然會拋出錯誤。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CAS xmlns="http://www.test.com/schema/CASXmlSchema">
<OperationList>
<Operation id="1">
<Type>calculate</Type>
<calculateParams>
<RequestInfo>
<CalcRequestTradeParam>
<TempTradeList>
<Trades>
<TemplateDefinitionID>TRADE.EQ.EQEUROPEAN</TemplateDefinitionID>
<TradeParameters>
<StringToParameterValueEntry>
<StringToParameterValueKey>Trade ID</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>EU1</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Template</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>TRADE.EQ.EQEUROPEAN</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Currency</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>USD</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Final Fixing Date</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>Date</ParameterType>
<NonTabularValue>15-Apr-14</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Ticker</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>C</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Flavor</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>Put</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Position</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>String</ParameterType>
<NonTabularValue>Sell</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Number of shares</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>Double</ParameterType>
<NonTabularValue>5</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
<StringToParameterValueEntry>
<StringToParameterValueKey>Strike</StringToParameterValueKey>
<StringToParameterValueValue>
<ParameterType>Double</ParameterType>
<NonTabularValue>40</NonTabularValue>
<TableValue/>
</StringToParameterValueValue>
</StringToParameterValueEntry>
</TradeParameters>
</Trades>
</TempTradeList>
</CalcRequestTradeParam>
<CalcRequestMarketParam>
<Expression>Id >= 0</Expression>
</CalcRequestMarketParam>
<CalculateRequestOutputs>PV</CalculateRequestOutputs>
<Currency>USD</Currency>
<TaskName>XML Request Test</TaskName>
<JobCount>10</JobCount>
<CalculationMethod>OnceAndHold</CalculationMethod>
<TimeFactorSeconds>0</TimeFactorSeconds>
<ProcessorName/>
<ProcessorOptions/>
</RequestInfo>
<ResultInfo>
<TaskId>0</TaskId>
<TradeStartIndex>0</TradeStartIndex>
<TradeNum>15</TradeNum>
<MarketStartIndex>0</MarketStartIndex>
<MarketNum>1</MarketNum>
<ResultRequestOutputs>Template</ResultRequestOutputs>
<ResultRequestOutputs>Currency</ResultRequestOutputs>
<ResultRequestOutputs>PV</ResultRequestOutputs>
<RequestType>Individual</RequestType>
<GroupSelection/>
</ResultInfo>
<RequestTimeoutMilliseconds>60000</RequestTimeoutMilliseconds>
</calculateParams>
</Operation>
</OperationList>
</CAS>
請建議。
您調用了錯誤的方法,請參閱此問答。
您應該調用XmlDocument.Load
。
事實上,你最好這樣做
var doc = XDocument.Load("path");
並使用linq 到 xml。
使用 XMLDocument.Load()。 這接受一個xml文件
而 XMLDocument.LoadXml() 接受一個 xml 字符串。
如果你真的想將它作為一個字符串讀入並且不想像其他人建議的那樣做XMLDocument.Load()
,你可以做XMLDocument.LoadXml()
,但它應該作為一個字符串,首先:
string myFilePath = @"C:\MappingFiles\InputFile.xml";
string allText = File.ReadAllText(myFilePath);
XmlDocument xmlDoc = new XmlDocument();
try
{
xmlDoc.LoadXml(allText);
}
catch (Exception ex)
{
Console.WriteLine("Error: " + ex.Message);
}
我發現即使文件上的.Load()
本身不起作用,這也可以工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.