按元素名称从 XML-Node 获取数据
Get data from a XML-Node by element-name
我有一个名为“server
”的 class,具有所有属性。我想将每个 node/element 的数据填入 class。
我知道的唯一方法是 foreach 和 than everytime 一个大的开关盒。这不是最好的方法!
这里是 XML-文件:
<serverData .....>
<name>...</name>
<number>...</number>
<language>de</language>
<timezone>...</timezone>
<domain>...</domain>
<version>...</version>
...
</serverData>
XML-文件来自 API,我通过以下行得到它:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(Request.request(URL));
现在我想做类似的事情(没有真正的代码只是一个例子):
Server server = new Server();
server.name = xmlDoc.node["name"].Value;
server.version = ...
...
感谢您的解决方案。
您可以使用 LINQ 来 XML:
XDocument xDoc = XDocument.Parse(Request.request(URL));
Server server = new Server {
name = xDoc.Root.Element("name").Value,
number = int.Parse(xDoc.Root.Element("name").Value),
language = xDoc.Root.Element("language").Value,
timezone = xDoc.Root.Element("timezone").Value
/* etc. */
};
由于您有一个格式良好且结构不变的 XML 文件,您也可以使用 XmlSerializer
:
简单地序列化它
[Serializable]
[XmlRoot("serverData")]
public class ServerData
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("number")]
public int Number { get; set; }
[XmlElement("language")]
public string Language { get; set; }
[XmlElement("timezone")]
public string Timezone { get; set; }
/* ... */
}
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ServerData));
using (Stream s = GenerateStreamFromString(Request.request(URL)))
{
xmlSerializer.Deserialize(s);
}
GenerateStreamFromString
实现可以找到 here.
我有一个名为“server
”的 class,具有所有属性。我想将每个 node/element 的数据填入 class。
我知道的唯一方法是 foreach 和 than everytime 一个大的开关盒。这不是最好的方法!
这里是 XML-文件:
<serverData .....>
<name>...</name>
<number>...</number>
<language>de</language>
<timezone>...</timezone>
<domain>...</domain>
<version>...</version>
...
</serverData>
XML-文件来自 API,我通过以下行得到它:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(Request.request(URL));
现在我想做类似的事情(没有真正的代码只是一个例子):
Server server = new Server();
server.name = xmlDoc.node["name"].Value;
server.version = ...
...
感谢您的解决方案。
您可以使用 LINQ 来 XML:
XDocument xDoc = XDocument.Parse(Request.request(URL));
Server server = new Server {
name = xDoc.Root.Element("name").Value,
number = int.Parse(xDoc.Root.Element("name").Value),
language = xDoc.Root.Element("language").Value,
timezone = xDoc.Root.Element("timezone").Value
/* etc. */
};
由于您有一个格式良好且结构不变的 XML 文件,您也可以使用 XmlSerializer
:
[Serializable]
[XmlRoot("serverData")]
public class ServerData
{
[XmlElement("name")]
public string Name { get; set; }
[XmlElement("number")]
public int Number { get; set; }
[XmlElement("language")]
public string Language { get; set; }
[XmlElement("timezone")]
public string Timezone { get; set; }
/* ... */
}
XmlSerializer xmlSerializer = new XmlSerializer(typeof(ServerData));
using (Stream s = GenerateStreamFromString(Request.request(URL)))
{
xmlSerializer.Deserialize(s);
}
GenerateStreamFromString
实现可以找到 here.