【发布时间】:2013-11-12 08:55:31
【问题描述】:
我正在尝试获取下面<data> 标记的值(这是一个测试值)。我在 Windows 窗体应用程序中使用 XElement 阅读它。但是如果我使用element.Value,我也会得到一个包含所有孩子值的字符串。最终需要读取的 XML 文件是生成的 XML 文件。所以解决方案需要是动态的。没有固定的名字。
element.Value 的结果是:This is a test value Jack22New YorkGuido21HollywoodMichael20BostonMy-Computer-1
XML 文件:
<?xml version="1.0" encoding="UTF-8"?>
<data name="data_resource" howabout="no">
This is a test value
<persons>
<person>
<name>Jack</name>
<age>22</age>
<pob>New York</pob>
</person>
<person>
<name>Guido</name>
<age>21</age>
<pob>Hollywood</pob>
</person>
<person>
<name surname="Bats">Michael</name>
<age>20</age>
<pob>Boston</pob>
</person>
</persons>
<computers>
<computer>
<name>My-Computer-1</name>
<test>
<test2>
<test3>
<test4 testAttr="This is an attribute" y="68" x="132">
Hatseflatsen!
</test4>
</test3>
</test2>
</test>
</computer>
</computers>
</data>
有没有人对此有修复或解决方案,我只得到它自己标签的价值,而不是他们所有的孩子?
【问题讨论】:
-
你到底想做什么?您可以遍历所有 *data 元素并使用 root.Elements("data") 而不是 Value. 逐个获取它们的值
-
是的,但正如我提到的:我使用的是生成的 XML 文件,所以我不知道我需要选择数据。那是一个例子。我只需要获取数据标签的值(不知道它是数据)。我确实遍历了所有项目,这就是我使用 element.Value 的原因。但是孩子们的所有价值观都会被添加到其中。我想要一个解决方案。
-
XElement和XNode之间存在差异。简单来说,节点>标签。每个元素都是一个节点,但不是每个节点都是一个标签。