Xml: "недопустимые символы в пути" на корневом элементе
Почему все, что я пытаюсь прочитать из XML-файла, падает на корневой элемент?
<? xml version= "1.0"?>
&ЛТ;AnXMLTestFile префиксом xmlns:xsi в="http://www.w3.org/2001/XMLSchema-instance" префиксом xmlns:xsd-файл="http://www.w3.org/2001/XMLSchema" атрибутов xmlns="ООН:ЕЭК ООН:260:сведения:еем:02-02-AnXMLTestFile"&ГТ;
/* С помощью класса XmlReader, объект XmlDocument, спецификации, MemoryStreamer/писателя ...
Даже если я опущу метод ' Encoding GetEncoding ()', у меня все равно будет 'запрещенные символы в пути на главную
XmlTextReader reader = new XmlTextReader(doc.ToString());
*/
Улучшение:
очистил какой-то код только для того, чтобы использовать основы. изменил строку для использования
string xml = richTextBox1.Text;
Теперь код не зацикливается на моем списке узлов.
Кто-нибудь может мне помочь, пожалуйста? Заранее спасибо.
Что я уже пробовал:
Пример XML-файла
<?xml version="1.0"?> <AnXMLTestFile xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="un:unece:260:data:EEM:02-02-AnXMLTestFile"> <HeaderBEDocument> <Identification>45071dc8-558d-439a-8f0a-88ae73a74910</Identification> <DocumentType listAgencyIdentifier="6">386</DocumentType> <Creation>2016-06-14T12:31:58.0+01:00</Creation> <SenderBEEnergyParty> <Identification schemeAgencyIdentifier="9">5414488009809</Identification> </SenderBEEnergyParty> <RecipientBEEnergyParty> <Identification schemeAgencyIdentifier="9">0000000000000</Identification> </RecipientBEEnergyParty> <IssuerBEEnergyParty> <Identification schemeAgencyIdentifier="9">5414488009809</Identification> </IssuerBEEnergyParty> <AddresseeBEEnergyParty> <Identification schemeAgencyIdentifier="9">0000000000000</Identification> </AddresseeBEEnergyParty> <DocumentStructureRevision>02-02.001</DocumentStructureRevision> </HeaderBEDocument>
private void btnSelectFile_Click(object sender, EventArgs e) { // Create an OpenFileDialog object. OpenFileDialog openFile1 = new OpenFileDialog(); // Initialize the filter to look for text files. openFile1.Filter = "Xml Files|*.xml"; // If the user selected a file, load its contents into the RichTextBox. if (openFile1.ShowDialog() == DialogResult.OK) { richTextBox1.LoadFile(openFile1.FileName, RichTextBoxStreamType.PlainText); } } private void btnMakeNegative_Click(object sender, EventArgs e) { // Load XML var doc = new XmlDocument(); string xml = richTextBox1.Text; doc.LoadXml(xml); // Define Default namespace and add prefix to use in Xpath (Mandatory!) var nsmgr = new XmlNamespaceManager(doc.NameTable); nsmgr.AddNamespace("x", "un:unece:260:data:EEM:AnXMLTestFile"); // Selecting All HeaderBEDocument nodes var nodeList = doc.DocumentElement.SelectNodes("//x:HeaderBEDocument", nsmgr); // Loop all HeaderBEDocument nodes foreach (XmlNode node in nodeList) { // Select Identification node under HeaderBEDocument node var identificationNode = node.SelectSingleNode("x:Identification", nsmgr); if (identificationNode != null) { // Change value of indentification node to string identificationNode.InnerText = "string"; } // Select SCI node under HeaderBEDocument node var SCI = node.SelectSingleNode("x:SCI", nsmgr); if (SCI != null) { // change value of SCI node to string SCI.InnerText = "56987465"; } // Select ReferenceType node under HeaderBEDocument node var ReferenceType = node.SelectSingleNode("x:ReferenceType", nsmgr); if (ReferenceType != null) { // change value of ReferenceType node to string ReferenceType.InnerText = "AA"; } // Select CCType node under HeaderBEDocument node var CCType = node.SelectSingleNode("x:CCType", nsmgr); if (CCType != null) { // change value of CCType node to string CCType.InnerText = "string"; } } // Print new XML in richtextbox richTextBox1.Text = nodeList.ToString(); } }
Richard Deeming
15 дней и пять вопросов спустя, и я начинаю думать, что здесь есть эхо!
Строка, содержащая XML-это НЕ допустимый путь к файлу. Это две совершенно разные вещи. Вы не можете передать одно методу, который ожидает другого.
Это похоже на разницу между дизельным топливом и неэтилированным - они обе жидкости, но если вы положите не ту в свою машину, это не закончится хорошо!
Если вы действительно не понимаете, о чем мы говорим, пожалуйста дайте нам знать. Не просто повторяйте один и тот же вопрос снова и снова.