【发布时间】:2014-06-25 11:46:12
【问题描述】:
这是我要阅读的xml
<servers>
<server name=" PIOU PIOU || OPTIMAL" ca="1" continent_code="EU"
country="France" country_code="FR" ip="s1.mymumble.fr"
port="20129" region="" url="http://www.mymumble.fr" />
</servers>
现在,当我阅读它时,我成功获得了元素“服务器”,并且我也可以阅读它的 innerxml,即创建了正确的节点。但是当我使用元素“服务器”创建一个节点时,该节点是空的。 我猜原因是“服务器”节点中使用的起始和结束元素的缩写形式。 但我的问题是xml来自某个远程服务器,我无法修改它,所以我必须按照它的编写方式阅读它。
这是我读取 XML 的代码:
List<XmlNode> nodeList = new List<XmlNode>();
XmlDocument doc = new XmlDocument();
while (reader.Read())
{
//keep reading until we see my element
if (reader.Name.Equals("server") && (reader.NodeType == XmlNodeType.Element))
{
XmlNode myNode = doc.ReadNode(reader);
Debug.Log(reader.IsEmptyElement ? "its empty" : "not empty");
//this always prints "its empty"
nodeList.Add(myNode);
}
}
foreach( XmlNode node in nodeList)
{
Debug.Log("child:\t"+node.FirstChild.InnerXml);
}
【问题讨论】:
-
"但是当我使用元素'server'创建一个节点时...这是什么意思??您使用 XmlReader 是否有原因?用LinqToXml不是更方便吗?
-
如您所见,节点服务器有很多信息,例如名称、国家/地区等,但我通过 'doc.ReadNode(reader)' 创建的那个节点中没有任何信息使用 XmlReader 的具体原因。