简体   繁体   English

在 XmlDocument 中加载 xml 文件时出错

[英]Error in loading xml file in XmlDocument

Hi I have below xml file that I am trying to load in xml document using below code -嗨,我有以下 xml 文件,我正在尝试使用以下代码将其加载到 xml 文档中 -

XmlDocument Doc = new XmlDocument();
Doc.LoadXml(@"C:\MappingFiles\InputFile.xml");

but its throwing error - Data at the root level is invalid.但它的抛出错误 - 根级别的数据无效。 Line 1, position 1.第 1 行,位置 1。

Xml file is fully structured still its throwing error. 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>

Please suggest.请建议。

Your calling the wrong method, see this question and answer.您调用了错误的方法,请参阅此问答。

You should be calling XmlDocument.Load .您应该调用XmlDocument.Load


In fact, you'd be better off doing事实上,你最好这样做

var doc = XDocument.Load("path");

and using linq to xml.并使用linq 到 xml。

Use XMLDocument.Load().使用 XMLDocument.Load()。 This accepts an xml file这接受一个xml文件

whereas XMLDocument.LoadXml() accepts an xml string.而 XMLDocument.LoadXml() 接受一个 xml 字符串。

If you really want to read it in as a string and don't want to do XMLDocument.Load() as others have suggested, you can do XMLDocument.LoadXml() , but it should be as a string, first:如果你真的想将它作为一个字符串读入并且不想像其他人建议的那样做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);
}

I found that this can work even when .Load() on the file, itself, does not.我发现即使文件上的.Load()本身不起作用,这也可以工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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