我有以下XML: 我只需要读取“ShortName”节点,但需要读取不同的字符串类型引用。 我如何引用source并获取shortname的文本然后对目标执行相同的操作? xml包含更多元素,例如Valid,我可以逐一阅读,代码如下:
valid = TMElement.GetElementsByTagName("Valid")[0].InnerText;
<GlobalInfo>
<LanguagePair>
<Source>
<ShortName>some data</ShortName>
</Source>
<Target>
<ShortName>some data</ShortName>
</Target>
</LanguagePair>
<Valid>true</Valid>
答案 0 :(得分:2)
你可以试试这个:
string xml = @"<GlobalInfo>
<LanguagePair>
<Source>
<ShortName>some data source</ShortName>
</Source>
<Target>
<ShortName>some data target</ShortName>
</Target>
</LanguagePair>
<Valid>true</Valid>
</GlobalInfo>";
XDocument xmlDoc = XDocument.Parse(xml);
LINQ查询语法:
string[] someDataSource =
(from data in xmlDoc.Descendants("Source")
select data.Element("ShortName").Value).ToArray();
string[] someDataTarget = (from data in xmlDoc.Descendants("Target")
select data.Element("ShortName").Value).ToArray();
或方法语法:
string[] someDataSource2 = xmlDoc.Descendants("Source").Select(x => x.Element("ShortName").Value).ToArray();
string[] someDataTarget2 = xmlDoc.Descendants("Target").Select(x => x.Element("ShortName").Value).ToArray();
答案 1 :(得分:0)
试试这个。导入using System.Xml;
XmlDocument xdoc = new XmlDocument();
// if xml coming via string
string myXml = "<GlobalInfo><LanguagePair><Source><ShortName>some data</ShortName></Source><Target><ShortName>some data</ShortName></Target></LanguagePair></GlobalInfo>";
xdoc.LoadXml(myXml);
string xpath = "GlobalInfo/LanguagePair";//specify path
var nodes = xdoc.SelectNodes(xpath);
foreach (XmlNode childrenNode in nodes)
{
for (int i = 0; i < childrenNode.ChildNodes.Count; i++) {
HttpContext.Current.Response.Write(childrenNode.ChildNodes[i].InnerText);
}
}
答案 2 :(得分:0)
谢谢大家。 这似乎比我更容易。最后,我找到了自己的解决方案。 只是为了记录,我会在这里发布:
string source = TMElement.SelectSingleNode("LanguagePair/Source/ShortName").InnerText;
string target = TMElement.SelectSingleNode("LanguagePair/Target/ShortName").InnerText;