Bat*_*uta 1 .net c# xml string
你好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>
Run Code Online (Sandbox Code Playgroud)
我需要解析这个字符串,以便我可以将数据写入一个数据表,其列是每个数据的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....
}
}
Run Code Online (Sandbox Code Playgroud)
要获取您使用的当前节点的属性:
string value = reader.GetAttribute(name_of_attribute);
Run Code Online (Sandbox Code Playgroud)
要获取元素的内部文本:
string innerText = reader.ReadString();
Run Code Online (Sandbox Code Playgroud)
使用XmlDocument类.这个类很慢但是操作并且读取xml非常容易,因为整个xml都被加载了.
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(yourXMLString);
//do something
Run Code Online (Sandbox Code Playgroud)
使用XDocument类.使用XDocument的优点是可以直接和同时访问元素.该类还使用LINQ的强大功能来查询xml文档.
using(StringReader tr = new StringReader(yourXMLString))
{
XDocument doc = XDocument.Load(tr);
//do something
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1407 次 |
| 最近记录: |