2

私は 3 種類の XML ファイルを扱っています。

タイプA:

<?xml version="1.0" encoding="UTF-8"?>
<nfeProc versao="2.00" xmlns="http://www.portalfiscal.inf.br/nfe">
</nfeProc>

タイプ B:

<?xml version="1.0" encoding="UTF-8"?>
<cancCTe xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04">
</cancCTe>

タイプ C:]

<?xml version="1.0" encoding="UTF-8"?>
<cteProc xmlns="http://www.portalfiscal.inf.br/cte" versao="1.04">
</cteProc>

このコードを使用して最初のノードを読み取ろうとしました:

     XmlDocument xmlDoc = new XmlDocument();
     xmlDoc.Load(@"C:\crruopto\135120068964590_v01.04-procCTe.xml");
     XmlNodeList ml = xmlDoc.GetElementsByTagName("*");
     XmlElement root = xmlDoc.DocumentElement;
     exti = root.ToString();

しかし、最初のノードを読みたいものは何も返さないでください。ファイルがnfeProc、canCTE、またはcteProcのいずれであるかを知る必要があります。2番目の質問は、同じタグの「値」から値を取得する方法です???

ありがとう

4

6 に答える 6

3

この投稿から:

//Root node is the DocumentElement property of XmlDocument

XmlElement root = xmlDoc.DocumentElement

//If you only have the node, you can get the root node by

XmlElement root = xmlNode.OwnerDocument.DocumentElement
于 2013-03-28T19:23:57.650 に答える
1

I would suggest using XPath. Here's an example where I read in the XML content from a locally stored string and select whatever the first node under the root is:

XmlDocument doc = new XmlDocument();
doc.Load(new StringReader(xml));

XmlNode node = doc.SelectSingleNode("(/*)");
于 2013-03-28T19:29:31.417 に答える
0

XmlDocumentそのようなものを使用する必要がない場合Linqは、あなたの友達です。

XDocument doc = XDocument.Load(@"C:\crruopto\135120068964590_v01.04-procCTe.xml");
XElement first = doc.GetDescendants().FirstOrDefault();
if(first != null)
{
  //first.Name will be either nfeProc, canCTE or cteProc.
}
于 2013-03-28T19:44:44.247 に答える
0

Linq to XML の操作は、.NET で XML を操作する最新かつ最も強力な方法であり、XmlDocument や XmlNode などよりもはるかに強力で柔軟性があります。

ルート ノードの取得は非常に簡単です。

XDocument doc = XDocument.Load(@"C:\crruopto\135120068964590_v01.04-procCTe.xml");
Console.WriteLine(doc.Root.Name.ToString());

XDocument を構築したら、LINQ クエリや特別なチェックを使用する必要はありません。XDocument から Root プロパティを取得するだけです。

于 2013-03-28T19:49:49.250 に答える
0

ありがとう、私はこの方法で最初の部分を解決しました

   XmlDocument xmlDoc = new XmlDocument();
   xmlDoc.Load(nomear);
   XmlNodeList ml = xmlDoc.GetElementsByTagName("*");
   XmlNode primer = xmlDoc.DocumentElement;
   exti = primer.Name;  
于 2013-03-28T20:01:32.440 に答える