Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Новый Node в XML
|
|||
|---|---|---|---|
|
#18+
Имеем простой XML: --------- <?xml version="1.0" encoding="utf-8"?> <Document> <Category> <CategoryID>1</CategoryID> <ParentCategoryID>0</ParentCategoryID> <CategoryDesc>Desc of Category 1</CategoryDesc> <CategoryText>Text of Category 1</CategoryText> </Category> <Category> <CategoryID>2</CategoryID> <ParentCategoryID>1</ParentCategoryID> <CategoryDesc>Desc of Category 2</CategoryDesc> <CategoryText>Text of Category 2</CategoryText> </Category> <Category> <CategoryID>3</CategoryID> <ParentCategoryID>2</ParentCategoryID> <CategoryDesc>Desc of Category 3</CategoryDesc> <CategoryText>Text of Category 3</CategoryText> </Category> </Document> Нужно добавить в каждый узел <Category> новый елемент <Path>, InnerText которого будет состоять из значенийй <CategoryID> его самого и его предков: 1. если ParentCategoryID равен 0, то <Path>1</Path> будет равен его <CategoryID>. 2. иначе- у второго елемента, например, <Path>2/1</Path>, а у третьего Path будет - <Path>3/2/1</Path> То есть , если первому и второму добавили елемент <Path> , то третий не будет путешествовать до первого, а возьмет <Path> второго, то есть его родителя. Тут дан отрывок кода - добавление елемента <Path> в елемент <Category> с <ParentCategoryID>0</ParentCategoryID>: --------------- public class _default : System.Web.UI.Page { private XmlDocument XMLDoc; private string XMLFile = "XMlFileName.xml"; private void Page_Load(object sender, System.EventArgs e) { if(!Page.IsPostBack) { XMLDoc = new XmlDocument(); RenderXML(); } } -------- public void RenderXML() { string strInnerText = string.Empty; string strParentPath = string.Empty; XmlTextReader reader = new XmlTextReader(Server.MapPath(XMLFile)); XMLDoc.Load(reader); reader.Close(); XmlNodeList nodes = XMLDoc.DocumentElement.GetElementsByTagName("Category"); foreach(XmlNode node in NodesList) { strInnerText = node.SelectSingleNode("ParentCategoryID").InnerText; if(strInnerText.Equals(string.Empty)) { XmlNode NewNode = this.XMLDoc.CreateNode(XmlNodeType.Element, "Path", ""); NewNode.InnerText = node.SelectSingleNode("CategoryID").InnerText; node.AppendChild(NewNode); }//if }//foreach } ------ Выдает ошибку: System.ArgumentException: The node to be inserted is from a different document context. Stack Trace: [ArgumentException: The node to be inserted is from a different document context.] System.Xml.XmlNode.AppendChild(XmlNode newChild) +575 PCAT._default.RenderXML() in c:\inetpub\wwwroot\Project12\default.aspx.cs:67 PCAT._default.Page_Load(Object sender, EventArgs e) in c:\inetpub\wwwroot\pcat\default.aspx.cs:30 System.Web.UI.Control.OnLoad(EventArgs e) +67 System.Web.UI.Control.LoadRecursive() +35 System.Web.UI.Page.ProcessRequestMain() +731 Не могу понять ,в чем проблема, может кто-нибудь имеет замечательные предложения на этот счет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.07.2005, 23:58 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=984&tid=1393790]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
36ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
33ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 387ms |

| 0 / 0 |
