簡體   English   中英

在 XmlDocument 中加載 xml 文件時出錯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM