как я могу перечислить все пространство имен в XML?

Кажется, есть недоразумение относительно того, что такое JSON (нотация объектов Javascript). Это просто формат данных, которые отправляются.

То, с чем вы работаете, это просто массив / объект.

Вы никогда не должны изменять строковый объект для добавления данных. Поработайте с самими объектами, а затем приведите их в соответствие.

const data=[{"S.N.":"1","ITEM":"CIGARETTES"," QUANTITY SOLD ":" 3,603,221 ","UNIT OF MEASURE":"CARTONS"},{"S.N.":"2","ITEM":"LIQUOR"," QUANTITY SOLD ":" 5,680,586 ","UNIT OF MEASURE":"BOTTLES"},{"S.N.":"3","ITEM":"BEER"," QUANTITY SOLD ":" 7,581,446 ","UNIT OF MEASURE":"CANS"}]

const res = data.reduce((a,c)=>{
  a[c.ITEM] = c;
  return a;
}, {});

console.log(res);

//then JSON.stringify res

Неуменьшенная версия:

const data=[{"S.N.":"1","ITEM":"CIGARETTES"," QUANTITY SOLD ":" 3,603,221 ","UNIT OF MEASURE":"CARTONS"},{"S.N.":"2","ITEM":"LIQUOR"," QUANTITY SOLD ":" 5,680,586 ","UNIT OF MEASURE":"BOTTLES"},{"S.N.":"3","ITEM":"BEER"," QUANTITY SOLD ":" 7,581,446 ","UNIT OF MEASURE":"CANS"}]

const res = {};
for(let i = 0; i < data.length; i++){
  res[data[i].ITEM] = data[i];
}

console.log(res);

//then JSON.stringify res

12
задан james.garriss 20 February 2012 в 20:00
поделиться

2 ответа

Спасибо за ваш быстрый ответ ...

Я думаю, что используемая вами версия .Net должна быть последний. Я использую .Net Framework 1.1 ... довольно старый :( ..

К тому времени, у меня есть пример кода, подобного этому ... для той же цели ...

XmlNodeList _xmlNameSpaceList =  _xmlDocument.SelectNodes(@"//namespace::*[not(. = ../../namespace::*)]");

            _xmlNSmgr = new XmlNamespaceManager(_xmlDocument.NameTable);        

            foreach(XmlNode nsNode in _xmlNameSpaceList)
            {
                _xmlNSmgr.AddNamespace(nsNode.LocalName,nsNode.Value);
            }

Любой комментарий будет оценен добавить знания в мою КБ ... Благодаря

8
ответ дан 2 December 2019 в 06:45
поделиться

Ваша основная проблема получения пространств имен из XmlDocument может быть решена простым извлечением NameTable из XmlDocument и создание из него XmlNameSpaceManager .

Однако, если вы хотите перечислить пространства имен для какой-либо другой цели, вам следует проверить метод GetNamespacesInScope , предоставляемый ] Класс XmlNamespaceManager , а также класс XPathNavigator .

При использовании XmlDocument из него можно получить XmlNamespaceManager с помощью следующего кода:

//Instantiate an XmlDocument object.
XmlDocument xmldoc = new XmlDocument();

//Load XML file into the XmlDocument object. 
xmldoc.Load("C:\\myFile.xml");

//Instantiate an XmlNamespaceManager object. 
XmlNamespaceManager nsMgr = new XmlNamespaceManager(xmldoc.NameTable);

// Retrieve the namespaces into a Generic dictionary with string keys.
IDictionary<string, string> dic = nsMgr.GetNamespacesInScope(XmlNamespaceScope.All);

// Iterate through the dictionary.

...

В этой статье , Скотт Хансельман представляет способ использования этого метода для вывода списка всех пространств имен в документе с использованием XPathNavigator и моста LINQ.

2
ответ дан 2 December 2019 в 06:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: