【发布时间】:2016-10-18 06:32:16
【问题描述】:
如何获取字符串中的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;
}
我怎样才能做到这一点?
【问题讨论】:
-
我刚刚测试了您的代码,它可以很好地加载文件。检查,您的路径是否正确。 (
Server.MapPath()) -
认为您的 XML 文件路径不正确。你的代码很好。或者,您可以尝试 XDocument。 XDocument 文档 = System.Xml.Linq.XDocument.Load(xmlFile); var symbols = doc.Root.Descendants("ActiveDimension").Select(x => x.Elements("ActiveDimensionSymbol").ToList()).ToList();
-
@kashi_rock 否,如果是这种情况,则会引发不同的异常。请注意使用
XmlDocument类的操作,而不是XDocument -
我能够在使用 XmlDocument 时重现此错误,但能够使用 XDocument 读取 XML。甚至我的有效 XML 文件也出现了同样的错误。