如何解决如何在C#中从XML文件访问数据
如何将来自XML文件的数据访问为变量?
<RESULTS>
<ROW>
<COLUMN NAME="OM_USER"><![CDATA[TEXT]]></COLUMN>
<COLUMN NAME="LASTNAME"><![CDATA[TEXT]]></COLUMN>
<COLUMN NAME="FIRSTNAME"><![CDATA[TEXT]]></COLUMN>
<COLUMN NAME="PHONE"><![CDATA[TEXT]]></COLUMN>
</ROW>
</RESULTS>
这是我尝试过的,但是输出很奇怪
XDocument xmlDocument = XDocument.Load(@"PATH");
var xElement = xmlDocument.Element();
if (xElement != null)
{
foreach (var child in xElement.Elements())
{
Console.WriteLine(child.Name + ": " + child.Value);
}
}
我的输出如下:
ROW:TEXTEXTTEXTTEXT 行:TEXTEXTTEXTTEXT 行:TEXTEXTTEXTTEXT 行:TEXTEXTTEXTTEXT
感谢您的帮助=)
解决方法
您面临的问题是您在xml树中的级别太高。通过说明
==5301== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==5301== Command: ./a.out
==5301==
my_s[3] one: 3 two: 6
==5301== Invalid read of size 4
==5301== at 0x40118F: main (in a.out)
==5301== Address 0x4 is not stack'd,malloc'd or (recently) free'd
==5301==
==5301==
==5301== Process terminating with default action of signal 11 (SIGSEGV): dumping core
...
您从xdocument的顶部获得了所有元素,xdocument的根名为“ RESULTS”
您的foreach遍历“ RESULTS”元素(“ ROW”)的所有子元素。如果您指定要打印子代的名称(ROW)及其值,则将获得元素“ ROW”及其子代所有的所有文本。如果使用调试器,您将看到此内容。
通过将代码更改为类似下面的代码,您将获得正确的结果
var xElement = xmlDocument.Elements();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。