gpt4 book ai didi

c# - 如何在 .NET 中解析字符串中的 XML?

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:21 25 4
gpt4 key购买 nike

你好,StackOverflowers,

我在我的一个 .NET 函数中收到了一个字符串。从 XML Visualizer 查看时的字符串如下所示:

- <root>
- <Table>
<ID>ABC-123</ID>
<CAT>Housekeeping</CAT>
<DATE>21-JUN-2009</DATE>
<REP_BY>John</REP_BY>
<LOCATION>Head Office</LOCATION>
</Table>
- <Table>
<ID>ABC-124</ID>
<CAT>Environment</CAT>
<DATE>23-JUN-2009</DATE>
<REP_BY>Michelle</REP_BY>
<LOCATION>Block C</LOCATION>
</Table>
- <Table>
<ID>ABC-125</ID>
<CAT>Staging</CAT>
<DATE>21-JUN-2009</DATE>
<REP_BY>George</REP_BY>
<LOCATION>Head Office</LOCATION>
</Table>
- <Table>
<ID>ABC-123</ID>
<CAT>Housekeeping</CAT>
<DATE>21-JUN-2009</DATE>
<REP_BY>John</REP_BY>
<LOCATION space="preserve" xmlns="http://www.w3.org/XML/1998/namespace" />
</Table>
</root>

我需要解析这个字符串,以便我可以将数据写入一个数据表,该数据表的列是每个数据的 xml 标记。

在上面的文本中,我会有一个包含 5 列的数据表,名为 ID、CAT、DATE、REP_BY 和 LOCATION,然后将包含 4 行数据。

在第四个标记中,请注意没有任何数据,而是标记为 space="preserve"。这意味着我放置在数据表中的数据对于第四行的 LOCATION 列将为空白。

我怎样才能做到这一点?示例代码将不胜感激。谢谢。

最佳答案

使用 XmlReader 类。此类速度很快,不会使用大量内存,但读取 xml 可能很困难。

using (StringReader strReader = new StringReader(yourXMLString))
{
using (XmlReader reader = XmlReader.Create(strReader))
{
while (reader.Read())
{
if(reader.Name == "Table" && reader.NodeType == reader.NodeType == XmlNodeType.Element)
{
using(XmlReader tableReader = reader.ReadSubtree())
{
ReadTableNode(tableReader);
}
}
}
}
}

private void ReadTableNode(XmlReader reader)
{
while (reader.Read())
{
if(reader.Name == "ID" && reader.NodeType == reader.NodeType == XmlNodeType.Element)
//do something
else if(reader.Name == "CAT" && reader.NodeType == reader.NodeType == XmlNodeType.Element)
//do something

//and continue....
}
}

获取当前节点的属性:

string value = reader.GetAttribute(name_of_attribute);

获取元素的内部文本:

string innerText =  reader.ReadString();

使用 XmlDocument 类。这个类很慢,但是操作和读取 xml 非常容易,因为整个 xml 都被加载了。

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(yourXMLString);
//do something

使用 XDocument 类。使用 XDocument 的优点是可以同时直接访问元素。此类还使用 LINQ 的强大功能来查询 xml 文档。

using(StringReader tr = new StringReader(yourXMLString))
{
XDocument doc = XDocument.Load(tr);
//do something
}

关于c# - 如何在 .NET 中解析字符串中的 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1225512/

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