这是我的名为test
的XML变量,具有以下XML,
<A>
<X>
<B id="ABC">
<C name="A" />
<C name="B" />
<C name="C" />
<C name="G" />
</B>
<B id="ZYZ">
<C name="A" />
<C name="B" />
<C name="C" />
<C name="D" />
</B>
<X>
</A>
我正在使用以下c#代码
创建result
XML变量
var result = new XElement(
"Result",
new[]
{
new XElement("First",test.Descendants("X"))
}
);
上面的代码抛出了null异常。
我需要以下输出XML,
<Result>
<B id="ABC">
<C name="A" />
<C name="B" />
<C name="C" />
<C name="G" />
</B>
<B id="ZYZ">
<C name="A" />
<C name="B" />
<C name="C" />
<C name="D" />
</B>
</Result>
任何帮助表示赞赏! :)
答案 0 :(得分:2)
您可以尝试这种方式:
var xml = @"<A>
<X>
<B id=""ABC"">
<C name=""A"" />
<C name=""B"" />
<C name=""C"" />
<C name=""G"" />
</B>
<B id=""ZYZ"">
<C name=""A"" />
<C name=""B"" />
<C name=""C"" />
<C name=""D"" />
</B>
</X>
</A>";
var doc = XDocument.Parse(xml);
var newDoc = new XElement("Result", doc.Root.Element("X").Elements());
//this will print the same output as you expect (the 2nd XML in question)
Console.WriteLine(newDoc.ToString());
答案 1 :(得分:1)
<Names>
<Name>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Name>
<Name>
<FirstName>James</FirstName>
<LastName>White</LastName>
</Name>
要使所有节点都使用XPath表达式/名称/名称。第一个斜杠表示该节点必须是根节点。 SelectNodes方法返回包含节点的集合XmlNodeList。
XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString); // suppose that myXmlString contains "<Names>...</Names>"
XmlNodeList xnList = xml.SelectNodes("/Names/Name");
foreach (XmlNode xn in xnList)
{
string firstName = xn["FirstName"].InnerText;
string lastName = xn["LastName"].InnerText;
Console.WriteLine("Name: {0} {1}", firstName, lastName);
}
答案 2 :(得分:0)
var result = new XElement("Result", test.Descendants("B"));