C# 如何正确地从innerXMl获取值
我计划检索数组中的每个建议,然后将其放入列表中。我检索选项节点数据有困难,在这个模式中{aeroplane,aeroplanes,aerobian}{I},任何种类的灵魂都可以帮我解决这个问题C# 如何正确地从innerXMl获取值,c#,arrays,xml,unity3d,nested,C#,Arrays,Xml,Unity3d,Nested,我计划检索数组中的每个建议,然后将其放入列表中。我检索选项节点数据有困难,在这个模式中{aeroplane,aeroplanes,aerobian}{I},任何种类的灵魂都可以帮我解决这个问题 XmlDocument findStringDoc = new XmlDocument(); findStringDoc.Load (Application.dataPath+ "/" + filename); XmlNodeList nodeList = findStringDoc.Se
XmlDocument findStringDoc = new XmlDocument();
findStringDoc.Load (Application.dataPath+ "/" + filename);
XmlNodeList nodeList = findStringDoc.SelectNodes("/results/error");
//XmlNodeList suggestionNodeList = findStringDoc.SelectNodes("/results/error/suggestions/option");
foreach(XmlNode xn in nodeList){
errorString.Add(xn["string"].InnerText);
errorType.Add(xn["type"].InnerText);
//string temp = xn["suggestion"].InnerXml;
////TODO: Retrieve suggestions here!
XmlNodeList suggestionNodeList = findStringDoc.SelectNodes("/suggestions");
foreach(XmlNode yn in suggestionNodeList){
option[suggestionNodeList.Count] = yn["option"].InnerText;
Debug.Log(yn["option"].InnerText);
}
suggestionResult.Add (option);
//Debug.Log(suggestionResult);
//XmlNodeList suggestionNodeList = findStringDoc.SelectNodes("/results/error[string='{0}']/suggestions/option",errorString[i]);
}
<results>
<error>
<string>aeroplan</string>
<description>Spelling</description>
<precontext>a</precontext>
<suggestions>
<option>aeroplane</option>
<option>aeroplanes</option>
<option>aerobian</option>
</suggestions>
<type>spelling</type>
</error>
<error>
<string>i</string>
<description>Make I uppercase</description>
<precontext></precontext>
<suggestions>
<option>I</option>
</suggestions>
<type>grammar</type>
<url>http://service.afterthedeadline.com/info.slp?text=i&tags=PRP&engine=1</url>
</error>
</results>
XmlDocument findStringDoc=new XmlDocument();
findStringDoc.Load(Application.dataPath+“/”+文件名);
XmlNodeList nodeList=findStringDoc.SelectNodes(“/results/error”);
//XmlNodeList suggestionNodeList=findStringDoc.SelectNodes(“/results/error/suggestions/option”);
foreach(节点列表中的xmlnodexn){
errorString.Add(xn[“string”].InnerText);
errorType.Add(xn[“type”].InnerText);
//字符串temp=xn[“建议”].InnerXml;
////TODO:在此处检索建议!
XmlNodeList suggestionNodeList=findStringDoc.SelectNodes(“/suggestions”);
foreach(suggestionNodeList中的XmlNode){
option[suggestionNodeList.Count]=yn[“option”].InnerText;
Log(yn[“option”].InnerText);
}
suggestionResult.Add(选项);
//Debug.Log(suggestionResult);
//XmlNodeList suggestionNodeList=findStringDoc.SelectNodes(“/results/error[string='{0}']/suggestions/option”,errorString[i]);
}
飞机
拼写
A.
飞机
飞机
aerobian
拼写
我
使我大写
我
语法
http://service.afterthedeadline.com/info.slp?text=i&标签=PRP&;发动机=1
您可以在下面使用我的代码:
private static void GetSuggestionOption(string filename, string value, string optionSuggest)
{
XDocument xDoc = XDocument.Parse(filename);
var parentNode = xDoc.Descendants().Where(x => x.Value == value).Ancestors().FirstOrDefault();
var childNode = parentNode.Descendants().Where(x => x.Name == optionSuggest);
childNode.ToList().ForEach(x => Console.WriteLine(x.Value));
}
调用:GetSuggestionOption(文件名,“aeroplan”,“option”)
快乐编码 您可以使用传递适当XPath字符串参数的方法从XmlDocument
中选择特定元素,例如:
public void GetSuggestionOption(string keyword)
{
XmlDocument doc = new XmlDocument();
doc.Load (Application.dataPath+ "/" + filename);
string xpath = string.Format("//error[string='{0}']/suggestions/option", keyword);
XmlNodeList optionSuggestionList = doc.SelectNodes(xpath);
foreach (XmlNode option in optionSuggestionList)
{
Debug.Log(option.InnerXml);
}
}
您可以这样调用该方法,例如:
GetSuggestionOption(“aeroplan”)
不幸的是,由于net.framework,unity3d需要使用XMLDocument,无论如何,感谢您的回答。是的,这就是我想要的。我认为创建字符串列表的数量取决于错误的数量,在错误列表中,有另一个内部列表存储错误建议选项。如果字符串选项卡值不唯一,则会导致一些问题