我需要找到一种方法将 xml 文档拆分成不同的字符串
i need to find a way to split an xml document into different strings
我有一个每次都可以改变的传入字符串,字符串是xml。
在服务器从 SQL 数据 table 中提取字符串后,该字符串正在从服务器发送。
更多信息:stock 是 table 名称,它有几列,但我使用 executeReader 只得到一列。
"<Result>\r\n <stock>\r\n <name>cheese</name>\r\n </stock>\r\n <stock>\r\n <name>butter</name>\r\n </stock>\r\n <stock>\r\n <name>MILK</name>\r\n </stock>\r\n <stock>\r\n <name>meat</name>\r\n </stock>\r\n</Result>"
现在我正在做的是将其保存为xml文档类型,然后使用方法
将其转换为字符串
private void AddList(XmlDocument xmlDoc)
{
string s = (xmlDoc.DocumentElement.InnerText);
string[] list = s.Split(" ");
int i = 0;
while(i<list.Length)
{
TypeCB.Items.Add(list[i]);// typeCB is a combo box which i want to have the name of the items that were sent
i++;
}
}
这添加了 cheesebutterMILKmeat 作为一个选项,而我希望它是 4 个不同的选项。
显然,问题是保存的是一个连续的字符串,因此程序无法将其拆分为“”,因为那些不存在。
如何拆分传入的文本?
在此示例中,我使用 System.Xml.Linq
命名空间中的 XDocument
,而不是 XmlDocument
。
假设您可以使用 XDocument
,您可以遍历 stock
个节点,然后 select 它们的 name
个节点。
// do something like this instead of how you create your XmlDocument:
string xml = "<Result>\r\n <stock>\r\n <name>cheese</name>\r\n </stock>\r\n <stock>\r\n <name>butter</name>\r\n </stock>\r\n <stock>\r\n <name>MILK</name>\r\n </stock>\r\n <stock>\r\n <name>meat</name>\r\n </stock>\r\n</Result>";
XDocument doc = XDocument.Parse(xml);
//Once you have the parsed xml you can select the node values and add them to the combobox
foreach (XElement el in doc.Descendants("stock"))
{
string name = el.Element("name").Value;
TypeCB.Items.Add(name);
}
我有一个每次都可以改变的传入字符串,字符串是xml。
在服务器从 SQL 数据 table 中提取字符串后,该字符串正在从服务器发送。
更多信息:stock 是 table 名称,它有几列,但我使用 executeReader 只得到一列。
"<Result>\r\n <stock>\r\n <name>cheese</name>\r\n </stock>\r\n <stock>\r\n <name>butter</name>\r\n </stock>\r\n <stock>\r\n <name>MILK</name>\r\n </stock>\r\n <stock>\r\n <name>meat</name>\r\n </stock>\r\n</Result>"
现在我正在做的是将其保存为xml文档类型,然后使用方法
将其转换为字符串 private void AddList(XmlDocument xmlDoc)
{
string s = (xmlDoc.DocumentElement.InnerText);
string[] list = s.Split(" ");
int i = 0;
while(i<list.Length)
{
TypeCB.Items.Add(list[i]);// typeCB is a combo box which i want to have the name of the items that were sent
i++;
}
}
这添加了 cheesebutterMILKmeat 作为一个选项,而我希望它是 4 个不同的选项。
显然,问题是保存的是一个连续的字符串,因此程序无法将其拆分为“”,因为那些不存在。
如何拆分传入的文本?
在此示例中,我使用 System.Xml.Linq
命名空间中的 XDocument
,而不是 XmlDocument
。
假设您可以使用 XDocument
,您可以遍历 stock
个节点,然后 select 它们的 name
个节点。
// do something like this instead of how you create your XmlDocument:
string xml = "<Result>\r\n <stock>\r\n <name>cheese</name>\r\n </stock>\r\n <stock>\r\n <name>butter</name>\r\n </stock>\r\n <stock>\r\n <name>MILK</name>\r\n </stock>\r\n <stock>\r\n <name>meat</name>\r\n </stock>\r\n</Result>";
XDocument doc = XDocument.Parse(xml);
//Once you have the parsed xml you can select the node values and add them to the combobox
foreach (XElement el in doc.Descendants("stock"))
{
string name = el.Element("name").Value;
TypeCB.Items.Add(name);
}