ত্রুটি: "sertedোকানো নোডটি একটি ভিন্ন নথির প্রসঙ্গে"


108

আমি যখন ফোন করছি তখন আমি XmlNode.AppendChild()এই ত্রুটিটি পেয়েছি:

Beোকাতে হবে নোড একটি ভিন্ন নথি প্রসঙ্গে।

static public XmlNode XMLNewChildNode(XmlNode oParent, string sName, 
    string sNamespaceURI, string sNodeType)
{
    XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);
    oParent.AppendChild(oNode);
    return oNode;
}

এই কোডটি এর ভিবি 6.0 সংস্করণ থেকে রূপান্তরিত হয়েছিল যা এটি ছিল (দয়া করে alচ্ছিক পরামিতিগুলি উপেক্ষা করুন, সি # সংস্করণে তাদের জন্য আমার ওভারলোড রয়েছে):

Public Function XMLNewChildNode(ByVal oParent As IXMLDOMNode, ByVal _
    sName As String, Optional ByVal sNamespaceURI As String = "", _
    Optional ByVal sNodeType As String = "element") As IXMLDOMNode
'**************** DESCRIPTION *******************
  'Create a new Child Node for passed Parent.
'***************** VARIABLES ********************
  Dim oNode As IXMLDOMNode
'************************************************
  Set oNode = moDoc.createNode(sNodeType, sName, sNamespaceURI)
  Call oParent.appendChild(oNode)
  Set XMLNewChildNode = oNode
End Function

সি # না করে কেন ভিবি কোড কাজ করে? ভিবি এবং সি # কীভাবে এক্সএমএল হ্যান্ডেল করে তার মধ্যে পার্থক্য রয়েছে, যা সম্পর্কে আমার সচেতন হওয়া দরকার?

উত্তর:


201

নোডটি যুক্ত করার আগে আপনাকে নথিতে ইমপোর্ট করতে হবে:

XmlNode oNode = moDoc.CreateNode(sNodeType, sName, sNamespaceURI);

//necessary for crossing XmlDocument contexts
XmlNode importNode = oParent.OwnerDocument.ImportNode(oNode, true);

oParent.AppendChild(importNode);
return oNode;

1
ধন্যবাদ স্যার! ইম্পোর্টনোড দুটি প্যারাম নেয় ... দ্বিতীয়টি ডিপক্লোন এর জন্য ... আমি কীভাবে সিদ্ধান্ত নিতে পারি যে এটিতে সত্য বা মিথ্যা পাস করা উচিত?
বোহন

7
আপনি যদি নোড এবং তার সমস্ত শিশু আমদানি করতে চান তবে @ বিডোটা সত্য; মিথ্যা যদি আপনি কেবল শীর্ষ-স্তরের নোড আমদানি করতে চান।
রেক্স এম

1
@ বিডোটা ডিবাগ করুন এবং কোন বস্তুটি শূন্য তা নির্ধারণ করুন
রেক্স এম

16
যদি OwnerDoccumentনাল হয়; ImportNode(..বলা উচিত oParent?
কুকুর কান

9
... হ্যাঁ,oParent.ImportNode(oNode, true);
কেসিডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.