我有一个要求,例如,我从xml中检索了id和供应商,其中包含40多个ID和Suppliers.Now我只需要获取特定Id和Supplier的父节点并将其附加到另一个xml。 / p>
然而我设法检索ID和供应商,现在我想在c#中获取整个xml。任何帮助都会很明显..
c#中
var action = xmlAttributeCollection["id"];
xmlActions[i] = action.Value;
var fileName = xmlAttributeCollection["supplier"];
xmlFileNames[i] = fileName.Value;
这是我用来获取ID和供应商的代码。
答案 0 :(得分:2)
您可能希望更具体地了解如何遍历Xml树,并提供变量类型,以便我们更清楚地了解问题。说这是我的答案:
假设items [i]是一个XmlNode,在这种情况下我们正在使用“hoteId”节点,有一个名为XmlNode.ParentNode的属性返回节点的直接祖先,如果它是一个根则返回null节点
XmlNode currentNode = items[i] as XmlNode; //hotelId
XmlNode parentNode = currentNode.ParentNode; //hotelDetail
string outerXml = parentNode.OuterXml; //returns a string representation of the entire parent node
完整示例:
XmlDocument doc = new XmlDocument();
doc.Load("doc.xml");
XmlNode hotelIdNode = doc.SelectSingleNode("hoteldetail//hotelId"); //Find a hotelId Node
XmlNode hotelDetailNode = hotelIdNode.ParentNode; //Get the parent node
string hotelDetailXml = hotelDetailNode.OuterXml; //Get the Xml as a string
答案 1 :(得分:0)
您可以获得如下的父XML:XmlNode node = doc.SelectSingleNode(“// hoteldetail”); node.innerXml;
答案 2 :(得分:0)
我认为你最好不要使用linq。
var xDoc = XDocument.Parse(yourXmlString);
foreach(var xElement in xDoc.Descendants("hoteldetail"))
{
//this is your <hoteldetail>....</hoteldetail>
var hotelDetail = xElement;
var hotelId = hotelDetail.Element("hotelId");
//this is your id
var id = hotelId.Attribute("id").Value;
//this is your supplier
var supplier = hotelId.Attribute("supplier").Value;
if (id == someId && supplier == someSupplier)
return hotelDetail;
}