gpt4 book ai didi

c# - 读取复杂的 XML 属性

转载 作者:数据小太阳 更新时间:2023-10-29 02:08:48 25 4
gpt4 key购买 nike

我有一个 XML 文件,它使用属性和标签的组合,其中包含数据。

我无法控制 XML 文件的结构,但我目前正在转换工具以查看 LINQ 来解析它,并想知道是否有关于如何最好地处理此结构的意见:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE call_flow SYSTEM "../../../../dtds/Callflow_1-1.dtd">
<call_flow version="1.1" serial="13903" first_element="Element1">
<element_def name="Element1">
<voice class="com.classname.Name">
<static>Element1.xml</static>
</voice>
<exit_state name="done">
<next_element>Element2</next_element>
</exit_state>
</element_def>
<element_def name="Element2">
<voice class="com.classname.Name2">
<static>Element2.xml</static>
</voice>
<exit_state name="option1">
<next_element>Element3</next_element>
</exit_state>
<exit_state name="option2">
<next_element>Element4</next_element>
</exit_state>
</element_def>
<element_def name="Element3">
<voice class="com.classname.Name3">
<static>Element3.xml</static>
</voice>
<exit_state name="done">
<next_element>Element4</next_element>
</exit_state>
</element_def>
<element_def name="Element4">
<decision>
<class src="com.classname.Name4"/>
</decision>
<exit_state name="0">
<next_element>Element3</next_element>
</exit_state>
<exit_state name="1">
<next_element>Element5</next_element>
</exit_state>
</element_def>
<element_def name="Element5">
<voice class="com.classname.Name5">
<static>element5.xml</static>
</voice>
</element_def>
</call_flow>

我可以找到大量 LINQ 代码示例,但我并没有真正了解如何获得 Next_Element 和 element_def“名称”属性的值。

如果有人可以提供帮助并为我指明正确的方向,我将不胜感激。

最佳答案

XDocument xdoc = XDocument.Load(path_to_xml);
var query = from ed in xdoc.Descendants("element_def")
select new
{
Name = (string)ed.Attribute("name"),
NextElements = ed.Elements("exit_state")
.Select(es => (string)es.Element("next_element"))
};

此查询将返回匿名对象序列,其中包含 Name包含 element_def 的属性名称和下一个元素的名称为 IEnumerable<string> .

关于c# - 读取复杂的 XML 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13783191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com