2011-08-15 4 views
0

xmlデータ交換を以下のように実行したいと思います。私が知らないランダム/ダイナミックXMLタグ名の読み方は?

着信XMLデータには、タグ名についてわからないタグ​​がいくつかあります。

タグ名を知らずにこれらのタグを読み取ることはできますか? また、データ属性としてタグ名を取得するにはどうすればよいですか?

例: 私は異なる患者の記録を読んでいます。すべての患者は異なる病気を有する。 「心臓病」、「がん」など。

<heart disease>serious</heart disease> 
<cancer>normal</cancer> 

私は前に両方のタグを知っていません。しかし、私はタグ名を読んでそれを提示したい。 最後に、私はデータを取得することができます。 心臓病を:通常の深刻 がん:

+0

ヒント:ここであなたのXMLの有効性を確認してください:http://www.w3schools.com/xml/xml_validator.asp – 321X

答えて

1

まあ、私は私が最初にホワイトスペースが有効なXMLタグのために作るていないことを警告すべきであると感じています。 <white space>STUFF</white space>を追加できますが、それは<white>タグとなります。より寛容な通訳者であれば、それは真のspaceブール属性を持っているかもしれません。 \s-に置き換えます。彼らは子ノードであるという事実以外のDOMDocumentで

、それらについて何も知らなくても、子ノードを読み取るために、あなたは適切な名前childNodesプロパティを使用します。

$doc = new DOMDocument(); 
$rand = rand(1,100); 
$doc->loadXML('<root><i'.$rand.'><cannot-know-i /></i'.$rand.'></root>'); 
foreach($doc->documentElement->childNodes as $node) 
    print $node->nodeName; // i$rand 
+0

あなたの思い出に感謝します...私はそれを最初に試しに行くでしょう:) :) – EdwardCPF

+0

+ 1 XMLが有効であることを確認してください! – 321X

1

はい、あなたは、することができ、例えばシンプルなXMLで:

$xml = new SimpleXMLElement($fileName, NULL, true); 

foreach ($xml->children() as $child) 
{ 
    print child->getName(); 

    foreach ($child->attributes() as $attribute) 
    { 
     print $attribute.', '; 
    } 
} 
+0

あなたの答えに感謝:)私はそれを最初に試してみます。 – EdwardCPF

0

XMLを別の形式にフォーマットすることをお勧めします。あなたが知っている形式で。

<?xml version="1.0" ?> 
    <Information> 
     <Disease target="heart" /> 
     <Cancer type="normal" /> 
    </Information> 
</xml> 

あなたのプログラミング言語(あなたの場合はPHP)で利用可能なすべてのパーサーを使用することができます。

関連する問題