0

我有一个要求,例如,我从一个具有 40 多个 ID 和供应商的 xml 中检索了 id 和供应商。现在我需要的是获取特定 Id 和供应商的父节点并将其附加到另一个 xml。

然而,我设法检索了 ID 和供应商,现在我想在 c# 中获取整个 xml。任何帮助都会很明显..

C#

  var action = xmlAttributeCollection["id"];
  xmlActions[i] = action.Value;
  var fileName = xmlAttributeCollection["supplier"];
  xmlFileNames[i] = fileName.Value;

这是我用来获取 ID 和供应商的代码。

4

3 回答 3

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
于 2013-10-29T05:31:35.433 回答
0

您可以像这样获得父 XML: XmlNode node = doc.SelectSingleNode("//hoteldetail"); 节点.innerXml;

于 2013-10-29T05:31:09.037 回答
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;
}
于 2013-10-29T05:59:41.340 回答