如何将xml节点值转换为字符串

时间:2016-10-18 06:32:17

标签: c# xml

如何在字符串中获取xml节点值。

我收到此错误

  

根级别的数据无效。第1行,第1位。

错误显示在此行

xmldoc.LoadXml(xmlFile);

我的xml

<?xml version="1.0" encoding="utf-8" ?>

<UOM>

  <!-- The selected currency used will be stored here for Code reference" -->
  <ActiveCurrencyType>
    <ActiveCurrency>U.S.Dollar</ActiveCurrency>
    <ActiveCode>USD</ActiveCode>
    <ActiveSymbol>$</ActiveSymbol>
  </ActiveCurrencyType>

  <!-- The selected Dimension used will be stored here for Code reference -->
  <ActiveDimension>
    <ActiveDimensionUOM>Inches</ActiveDimensionUOM>
    <ActiveDimensionSymbol>.in</ActiveDimensionSymbol>
  </ActiveDimension>

  <!-- The selected weight used will be stored here for Code reference -->
  <ActiveWeight>
    <ActiveWeightUOM>Pounds</ActiveWeightUOM>
    <ActiveWeightSymbol>lb</ActiveWeightSymbol>
  </ActiveWeight>

</UOM>

C#代码

    string xmlFile = Server.MapPath("~/HCConfig/HCUOM.xml");
    XmlDocument xmldoc = new XmlDocument();
    xmldoc.LoadXml(xmlFile);
    XmlNodeList nodeList = xmldoc.GetElementsByTagName("ActiveDimensionSymbol");
    string ActiveDimensionSymbol = string.Empty;
    foreach (XmlNode node in nodeList)
    {
        ActiveDimensionSymbol = node.InnerText;
    }

我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:2)

您使用了错误的重载,LoadXml并没有按照您的想法执行操作。

使用xmldoc.Load(xmFile);,因为该方法将文件路径作为输入。 LoadXml期望一个包含xml的字符串。

该例外是该错误的指标。处理的不是XML,文件路径不是。

在此更改后,如果我在本地运行,则字符串ActiveDimensionSymbol包含.in

如果你想使用LoadXml,首先应该用字符串读取整个文件,例如:

 xmldoc.LoadXml(File.ReadAllText(xmlFile));

但如果有一个接受文件的方法,则实际上只是调用File.ReadAllText的开销。

答案 1 :(得分:0)

您可以使用Descendants()方法以System.Xml.Linq命名空间中的特定名称获取所有XElements。

XDocument doc = XDocument.Load("XMLFile1.xml");
string[] allActiveWeightUOMs = doc.Descendants("ActiveWeightUOM").Select(o => o.Value).ToArray();

// allActiveWeightUOMs : "Pounds" ...

答案 2 :(得分:0)

正如此处link所示,用于加载XML的方法除了xml之外,不是字符串而是xml文件。您可以使用XmlDocument.LoadXml代替if (Integer.parseInt(quantity.getText().toString())!=1){ quantity.setText(""+Integer.parseInt(quantity.getText().toString())-1); }

答案 3 :(得分:0)

尝试使用此代码可以正常使用此xml

string xmlFile = Server.MapPath("~/HCConfig/HCUOM.xml");
XDocument doc = XDocument.Load(xmlFile );

var nodeList = doc.Descendants("ActiveDimensionSymbol");
string ActiveDimensionSymbol = string.Empty;
foreach (var node in nodeList)
{
   ActiveDimensionSymbol = node.Value;
}