it-swarm.dev

xml error: K obsahu nelze přidat znaky bez mezer

Snažím se otevřít xmldocument takto:

var doc = new XDocument("c:\\temp\\contacts.xml");
var reader = doc.CreateReader();
var namespaceManager = new XmlNamespaceManager(reader.NameTable);
namespaceManager.AddNamespace("g", g.NamespaceName);
var node = doc.XPathSelectElement("/Contacts/Contact/g:Name[text()='Patrick Hines']", namespaceManager);
node.Value = "new name Richard";
doc.Save("c:\\temp\\newcontacts.xml");

V prvním řádku vrátím chybu:

Non whitespace characters cannot be added to content.

Soubor xmlfile vypadá takto:

<?xml version="1.0" encoding="utf-8"?>
<Contacts xmlns:g="http://something.com">
  <Contact>
    <g:Name>Patrick Hines</g:Name>
    <Phone>206-555-0144</Phone>
    <Address>
      <street>this street</street>
    </Address>
  </Contact>
</Contacts>
17
user603007

Vypadá to, že se pokoušíte načíst soubor XML do XDocumentu, ale musíte zavolat XDocument.Load("C:\\temp\\contacts.xml"); - nemůžete předat XML soubor do konstruktoru.

Můžete také načíst řetězec XML pomocí XDocument.Parse(stringXml);.

Změňte svůj první řádek na:

var doc = XDocument.Load("c:\\temp\\contacts.xml");

A bude to fungovat.

Pro odkaz existují 4 přetížení konstruktoru XDocument:

XDocument();
XDocument(Object[]);
XDocument(XDocument);
XDocument(XDeclaration, Object[]);

Možná jste mysleli na třetí (XDocument(XDocument)), ale abyste mohli použít ten, který byste museli napsat:

var doc = new XDocument(XDocument.Load("c:\\temp\\contacts.xml"));

Což by bylo zbytečné, když bude var doc = XDocument.Load("c:\\temp\\contacts.xml"); stačit.

Viz XDocument Constructor pro drsné detaily.

46
Tim
XDocument xdoc=XDocument.load(path)
0
hadi.sh

Použít XDocument.Parse (řetězec xml)

0
tichra